2013-08-06 9 views
7

Właśnie przeczytałem książkę, która zaleca włączenie najwyższego poziomu ostrzeżenia w GCC. Właśnie sprawdzam dokument online i stwierdzam, że jest za dużo parametrów. Chcę włączyć najwyższy poziom ostrzegawczy, którego parametru mam użyć?Jak włączyć najwyższy poziom ostrzeżenia w kompilatorze GCC (Boost jest intensywnie używany)

I używamy Boost mocno w naszym projekcie.

+5

'-Wall -Wextra -pedantic-errors' to dobry początek, jeśli nie wszystko, czego potrzebujesz. – chris

+0

tylko dla każdego, kto używa klang na apple ma '-Weverything' – aaronman

+0

@chris Jednakże, z nowymi wersjami GCC (4.8.1 dla mnie), nigdy nie możesz używać Boost z tą kombinacją flag, chyba że specjalnie tłumisz ostrzeżenia generowane przez Zwiększ kod. Ktoś jest "-Wunused-local-typedefs"? –

Odpowiedz

10

przeciwieństwie do cl, który posiada 4 poziomy, gcc ma tylko zestaw opcji, które można włączyć lub wyłączyć.

Jak wspomniano przez innych, -Wall jest domyślnym, który włącza się już wiele ostrzeżeń. Opcja -pedantic dodaje jeszcze kilka. I jeszcze jedna grupa ... -Wextra kolejna grupa ...

Ale aby naprawdę uchwycić wiele ostrzeżeń, musisz ręcznie dodać wiele .

Jest to zestaw lubię używać, chociaż ktoś mi powiedział, że niektóre z nich były sprzeczne, uważam, że lista raczej dobre dla mojej pracy na rzecz rozwoju:

-Werror -Wall -Wextra -pedantic -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wundef -Wno-unused -Wno-variadic-macros -Wno-parentheses -fdiagnostics-show-option

pamiętać, że skorzystania z -Werror ponieważ w przeciwnym razie otrzymasz ostrzeżenia i zignorujesz je. Z -Werror, nie ignoruj ​​niczego! Napisz nieskazitelny kod, a twoje oprogramowanie będzie działało zgodnie z oczekiwaniami.

+0

czy rozważałeś użycie Boost? Czy to będzie jakiś problem? Nie wątpię w to, po prostu nie wiem. Dzięki – Yang

+0

Z doładowaniem może być konieczne usunięcie kilku opcji, aby nie musieć ich wyłączać w kodzie. Jedną rzeczą, z którą pracuję firma, jest stworzenie zestawu wrapperów dla plików, które powodują problemy. W nich możesz użyć #pragma, aby wyłączyć ostrzeżenia, które w przeciwnym razie zostałyby wygenerowane. Na przykład: '#pragma Diagnostyka GCC zignorowana" -Wold-style-cast "' pomogłaby, gdybyś użył makra, który używa rzutowania w stylu C. –

+2

'-Wconversion' to kolejna, którą możesz wziąć pod uwagę – JDiMatteo

-1

Myślę, że można użyć przełącznika -Wall

Powiązane problemy