2009-02-20 8 views
23

Ich bin ein Neuling in C++ Programmierung. Beim Kompilieren verwende ich nie eine Option.Was ist deine liebste g ++ Option?

Das ist mein Tag zu Tag Befehl:

g++ MyCode.cc -o MyCode 

Zur Sicherheit der Praxis, was die beste Option zu benutzen?

+0

einfach ein paar Ergebnisse der Suche: http://stackoverflow.com/questions/154630/recommended-gcc-warning-options-for-c http : //stackoverflow.com/questions/399850/best-compiler-warning-level-for-cc-compiler – Anonymous

+1

Sie können das gleiche Ergebnis erzielen, indem Sie make –

Antwort

35
g++ -W -Wall -Werror 

Werden alle Fehler und Warnungen möglich angezeigt werden und sie als Fehler behandeln.

+7

Zum OP - Tu, was dieses Poster vorschlägt! Sie werden sich viele Kopfschmerzen ersparen, wenn Sie nur auf die Compiler-Warnungen hören. Ignoriere sie nicht! – eduffy

+7

Tatsächlich aktiviert es nicht alle möglichen Warnungen. -Write-Strings und -Wconversion sind auch gut. –

+0

Ein anderer guter ist '-Wnon-virtual-dtor', obwohl es zu falschen positiven Ergebnissen führen kann, wenn der dtor geschützt ist. –

17

"-Werror": behandelt alle Warnungen als Fehler, so dass Sie sie beheben müssen. Unglaublich wertvoll.

+2

zusammen mit -Wall eingeben, um alle nützlichen Warnungen natürlich zu aktivieren. –

5

Eigentlich ist es ein Satz: -Wall -pedantic -std=c++98

10
g++ -Wall -Weffc++ -Werror -pedantic 

Wenn ich Boost-bin mit, obwohl, lasse ich es auf:

g++ -Wall -Werror 

Ich bin gespannt auf GCC 4.4 und 4.5, though. Es gibt einige Features, die ich dringend brauche.

+0

Worauf warten Sie auf die Funktionen 4.4/4.5? – Ned

+1

Lambdas (die ich hoffe, in 4.5 zu sehen), Auto-Variablen (4.4), stark typisierte Enums (4.4) und, am wichtigsten, atomare <>, auf die ich hoffentlich in 4.5 gehofft werde. – greyfade

+0

Leider macht -WffC++ Objekte mit internen Zeigern zum Albtraum. – Tom

17
g++ -g 

Ich brauche diese Debug-Informationen wirklich ....

16

Wenn Sie dachten, Sie alles gefangen, versuchen -Wextra

4

-pipe, beschleunigt es Kompilation ein wenig nach oben. Auch -O2, was die Ausführung beschleunigt.

+0

Optimierung wird im Allgemeinen Debugging stören. Für einen Neuling wäre die Verwendung von -g und ohne -Ox vorzuziehen. – Calyth

+0

Welche Geschwindigkeitsverbesserungen haben Sie bei -pipe gesehen? Ich finde, dass es keinen wesentlichen Unterschied macht, da der Großteil der Zeit mit dem Verlinken verbracht wird (was nicht über mehrere Kerne parallelisiert werden kann, wie zum Beispiel die Kompilierung). – Tom

3

Ich mag -march=athlon -O2 -pipe für den Aufbau der meisten Programme (ich laufe Gentoo zu Hause), und ich benutze -ansi -pedantic -Wall für Code, den ich selbst schreibe.

7

Wir verwenden immer

g++ -Wall -Wextra ... 
6
 
-ansi 
-pedantic 

-D__STDC_FORMAT_MACROS 
-D__STDC_CONSTANT_MACROS 
-D__STDC_LIMIT_MACROS 
-D_GNU_SOURCE 
-D_REENTRANT 

-Wall 
-Wextra 
-Wwrite-strings 
-Winit-self 
-Wcast-align 
-Wcast-qual 
-Wold-style-cast 
-Wpointer-arith 
-Wstrict-aliasing 
-Wformat=2 
-Wuninitialized 
-Wmissing-declarations 
-Woverloaded-virtual 
-Wnon-virtual-dtor 
-Wctor-dtor-privacy 
-Wno-long-long 

-O3 
-ftree-vectorize 
-ftree-vectorizer-verbose=2 
-ffast-math 
-fstrict-aliasing 
-march=native/pentium4/nocona/core2 
-msse2 
-mfpmath=sse 
Verwandte Themen