2013-08-06 2 views
7

, die die höchste Warnstufe in GCC empfiehlt ermöglichen. Ich überprüfe einfach das Dokument online und fand, dass es zu viele Parameter gibt. Ich möchte die höchste Warnstufe aktivieren, welchen Parameter soll ich verwenden?Wie die höchste Warnstufe in GCC Compiler ermöglichen, ich lese gerade ein Buch (Boost-stark genutzt wird)

Und wir verwenden Boost-stark in unserem Projekt.

+5

'-Wall -Wextra -pedantic-errors' ist ein guter Anfang, wenn nicht alles, was Sie brauchen. – chris

+0

nur für jedermann auf Apfel mit Klirren es hat '-Weverything' – aaronman

+0

@ Chris jedoch mit neuen GCC-Versionen (4.8.1 für mich), kann man nie mit dieser Kombination von Flaggen-Boost verwenden, wenn Sie speziell die Warnungen unterdrücken, die durch Boost-Code. '-Wunused-local-typedefs' irgendjemand? –

Antwort

10

Im Gegensatz cl, welche 4 Ebenen, gcc nur eine Reihe von Optionen, die Sie ein- oder ausschalten können.

Wie bereits von anderen erwähnt, ist die -Wall ist die Standardeinstellung, die bereits auf vielen Warnungen dreht. Die -pedantic Option fügt ein paar mehr hinzu. Und -Wextra noch eine andere Gruppe ...

Aber um wirklich viele Warnungen zu erfassen, müssen Sie viele manuell hinzufügen.

Es gibt einen Satz ich verwenden möchte, obwohl mir jemand gesagt, dass einige von denen, widersprüchlich waren, finde ich diese Liste ziemlich gut für meine Entwicklungsarbeit:

-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

Bitte beachte, dass ich Gebrauch machen von -Werror weil sonst Warnungen angezeigt werden und ignoriert werden. Mit -Werror, nichts mehr ignorieren! Schreibe makellosen Code und deine Software funktioniert viel wahrscheinlicher als erwartet.

+0

Haben Sie die Verwendung von Boost in Betracht gezogen? Wird das ein Problem verursachen? Daran zweifle ich nicht, ich weiß es einfach nicht. Danke – Yang

+0

Mit Boost müssen Sie möglicherweise einige der Optionen entfernen, um sie nicht im Code deaktivieren zu müssen. Eine Sache, mit der ich arbeite, ist, eine Reihe von Wrappern für Dateien zu erstellen, die Probleme verursachen. In ihnen können Sie dann ein # pragma verwenden, um die Warnungen zu deaktivieren, die sonst erzeugt würden. Zum Beispiel: '#pragma GCC-Diagnose ignoriert" -Wold-style-cast "' würde helfen, wenn Sie ein Makro verwenden, das eine C-artige Besetzung verwendet. –

+2

'-Wwandlung 'ist eine andere, die Sie in Betracht ziehen könnten – JDiMatteo

-1

Ich denke, man die -Wall-Switch kann