Closed emlun closed 10 years ago
$*
är stammen på den regel som används (t.ex. regeln %.o: har stammen "foo" om man kör "make foo.o"). GNU make manual-Wall
och -g
gör.
-Wall
: skriv ut (nästan) alla varningar-g
: generera debug-information (framför allt för GDB)man g++
:
-Wall
This enables all the warnings about constructions that some users consider questionable, and that are easy to
avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-
specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options.
-Wall turns on the following warning flags:
-Waddress -Warray-bounds (only with -O2) -Wc++11-compat -Wchar-subscripts -Wenum-compare (in C/ObjC; this is on
by default in C++) -Wimplicit-int (C and Objective-C only) -Wimplicit-function-declaration (C and Objective-C
only) -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmaybe-uninitialized
-Wmissing-braces (only for C/ObjC) -Wnonnull -Wopenmp-simd -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs
-Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
Note that some warning flags are not implied by -Wall. Some of them warn about constructions that users
generally do not consider questionable, but which occasionally you might wish to check for; others warn about
constructions that are necessary or hard to avoid in some cases, and there is no simple way to modify the code
to suppress the warning. Some of them are enabled by -Wextra but many of them must be enabled individually.
1.1 (iteration, pekare, make)
Det finns ett klassiskt program som brukar kallas för Hello world. Denna uppgift går ut på att skriva ett program, här kallat hello, som skriver ut olika varianter på texten
Hello world!
. Programmet ska kunna ta en text och/eller ett tal som argument. Exempelkörning:Denna uppgift är alltså inte en övning i objektorienterad programmering utan en introduktion till C/C++.
Tips: Använd
argv
ochargc
. Användatoi
för att översätta enchar *
till ett tal (om strängen inte representerar ett tal får man noll). Vi kommer använda den kompilatorg++
som finns intallerad på salsdatorerna. För att kompilera din källkodsfil nedan kalladmyfile.cpp
skriv:Filen
myprog.out
kan du köra i terminal fönstret genom att skriva:Om man inte anger
-o
döps den kompilerade filen tilla.out
på uni-system. Ofta används programmetmake
för att kompilera större projekt, make utgår från att det finns en filmakefile
med regler för vad som ska göras. Kopieramakefile
från kurskatalogen till den katalog du står på (.
) och titta på filen.Nu kan du skriva
Det är nyttigt att lära sig hur make fungerar (även de som använder Visual Studio) googla efter valfri kort tutorial och svara på vad andra raden gör, vad betyder
$*
? Googla även på g++ och ta reda på vad-Wall
och-g
gör.