2009-02-20 5 views
23

Sono un novizio nella programmazione C++. Durante la compilazione non uso mai alcuna opzione.Qual è la tua opzione g ++ preferita?

Questo è il mio giorno per giorno il comando:

g++ MyCode.cc -o MyCode 

Per misure di sicurezza adeguate qual è l'opzione migliore da usare?

+0

A pochi risultati dalla ricerca: http://stackoverflow.com/questions/154630/recommended-gcc-warning-options-for-c http : //stackoverflow.com/questions/399850/best-compiler-warning-level-for-cc-compilers – Anonymous

+1

È possibile ottenere lo stesso risultato digitando make –

risposta

35
g++ -W -Wall -Werror 

mostrerà tutti gli errori e gli avvisi possibili e trattarli come errori.

+7

All'OP - Fai ciò che questo poster suggerisce! Ti risparmierai molti mal di testa se ascolterai solo gli avvisi del compilatore. Non ignorarli! – eduffy

+7

In realtà, non abilita tutti gli avvisi possibili. -Wwrite-string e -Wconversion sono buoni anche. –

+0

Un altro buono è '-Wnon-virtual-dtor' sebbene possa causare falsi positivi se il dtor è protetto. –

17

"-Werror": considera tutti gli avvisi come errori, quindi è necessario correggerli. Incredibilmente prezioso.

+2

Insieme a -Wall per attivare tutti gli avvisi utili, ovviamente. –

5

In realtà, è un set: -Wall -pedantic -std=c++98

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

Quando sto usando Boost, però, cadere giù a:

g++ -Wall -Werror 

Sto aspettando con ansia GCC 4.4 e 4.5, però. Ci sono alcune caratteristiche di cui ho davvero bisogno.

+0

Quali sono le funzioni 4.4/4.5 che stai aspettando? – Ned

+1

Lambdas (che spero mostri in 4.5), variabili automatiche (4.4), enfasi fortemente tipizzate (4.4), e, soprattutto, atomiche <>, che sto sperando disperatamente di fare in 4.5. – greyfade

+0

Sfortunatamente, -WeffC++ rende gli oggetti con puntatori interni un incubo. – Tom

17
g++ -g 

ho davvero bisogno che le informazioni di debug ....

16

Se pensavate che hai preso tutto, provare -Wextra

4

-pipe, accelera la compilazione un po '. Anche -O2, che accelera l'esecuzione.

+0

L'ottimizzazione in genere interferisce con il debug. Per un principiante, sarebbe preferibile usare il -g e senza -Ox. – Calyth

+0

Quali miglioramenti di velocità hai visto con -pipe? Trovo che non faccia una differenza significativa, dato che il grosso del tempo è dedicato al collegamento (che non può essere parallelizzato su più core, come la compilazione). – Tom

3

Mi piace -march=athlon -O2 -pipe per la maggior parte dei programmi (eseguo Gentoo a casa) e utilizzo -ansi -pedantic -Wall per il codice che scrivo da solo.

7

Usiamo sempre

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