2009-02-20 10 views
23

Jestem początkującym programistą w C++. Podczas kompilacji nigdy nie używam żadnej opcji.Jaka jest twoja ulubiona opcja g ++?

To jest mój dzień do komendy dzień:

g++ MyCode.cc -o MyCode 

Dla praktyki bezpieczeństwa, co jest najlepszym rozwiązaniem w użyciu?

+0

zaledwie kilka wyników z wyszukiwania: 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

Możesz osiągnąć ten sam wynik, wpisując make –

Odpowiedz

35
g++ -W -Wall -Werror 

wyświetli wszystkie możliwe błędy i ostrzeżenia i traktować je jako błędy.

+7

Do PO - Zrób co sugeruje ten plakat! Zaoszczędzisz sobie wiele bólów głowy, jeśli usłyszysz ostrzeżenia kompilatora. Nie ignoruj ​​ich! – eduffy

+7

W rzeczywistości nie włącza wszystkich możliwych ostrzeżeń. -Pliki napisów i -Wwersja są również dobre. –

+0

Kolejny dobry to '-Wnon-virtual-dtor', chociaż może skutkować fałszywymi alarmami, jeśli dtor jest chroniony. –

17

"-Werror": traktuje wszystkie ostrzeżenia jako błędy, więc musisz je naprawić. Niewiarygodnie cenne.

+2

Wraz z -Wall, aby włączyć wszystkie przydatne ostrzeżenia, oczywiście. –

5

Faktycznie, jest to zestaw: -Wall -pedantic -std=c++98

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

Kiedy używam Boost choć, upuść go w dół do:

g++ -Wall -Werror 

ja z niepokojem czeka GCC 4.4 i 4.5, choć. Pojawiają się pewne funkcje, których naprawdę potrzebuję.

+0

Na jakie funkcje 4.4/4.5 czekasz? – Ned

+1

Lambdas (które mam nadzieję pojawią się w 4.5), automatyczne zmienne (4.4), mocno napisany enum (4.4), i, co najważniejsze, atomowe <>, które mam nadzieję rozpaczliwie robią w 4.5. – greyfade

+0

Niestety, -WeffC++ czyni obiekty z wewnętrznymi wskaźnikami koszmarem. – Tom

17
g++ -g 

muszę naprawdę te informacje debugowania ....

16

Jeśli myślałeś, że jesteś złapany wszystko, spróbuj -Wextra

4

-pipe, przyspiesza kompilację trochę. Również -O2, co przyspiesza wykonywanie.

+0

Optymalizacja ogólnie przeszkadza w debugowaniu. Dla początkującego korzystniejsze byłoby użycie opcji -g i bez -Ox. – Calyth

+0

Jakie ulepszenia prędkości widziałeś z -pipe? Uważam, że nie robi to znaczącej różnicy, ponieważ większość czasu spędza się na łączeniu (które nie może być zrównoleglone na wielu rdzeniach, jak na przykład kompilacja). – Tom

3

Podoba mi się -march=athlon -O2 -pipe do budowania większości programów (prowadzę Gentoo w domu), a ja sam używam kodu -ansi -pedantic -Wall.

7

Zawsze używać

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 
Powiązane problemy