Abgesehen von -Wall, welche anderen Warnungen haben die Leute nützlich gefunden?
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
c
gcc
compiler-errors
Sard
quelle
quelle
-Wdeclaration-after-statement
Heutzutage muss ich ' ' hinzufügen, um Code zu erkennen, den MSVC (der im Grunde immer noch ein C89-Compiler ist) nicht verarbeiten kann. Es ist ein Ärgernis. Das Hinzufügen von '-Wextra
' kann auch einige andere Probleme erkennen.-O3
etwas Ähnliches hinzuzufügen . Es gibt Warnungen, die nur generiert werden, wenn der Code optimiert ist.-m32
und-m64
(natürlich in getrennten Läufen) bietet einen besseren Schutz vor verschiedenen Fehlern bei der Verwendungprintf()
und denscaf()
Konvertierungsspezifikationen.Stand 01.09.2011, mit gcc Version 4.6.1
Mein aktueller Alias "Entwicklung"
Der Alias "Release"
Stand 03.11.2009
Alias "Entwicklung"
Alias "freigeben"
quelle
-Wfloat-equal
zu meinem Alias hinzugefügt. Vielen Dank, dass Sie Mark-Wstrict-aliasing=2
die Warnstufe von-Wstrict-aliasing=3
impliziert-Wall
zumindest durch eine neuere Version von gcc tatsächlich gesenkt wird.Ich mag -Werror. Hält die Code-Warnung frei.
quelle
#warning
einen guten Nebeneffekt der Verwendung loszuwerden-Werror
.-Werror
in Ihren Builds nicht standardmäßig verwendet werden, ärgert dies Packager, die andere Compilerversionen als Sie verwenden, da sich die Warnungen mit der Compilerversion ändern. Manchmal hat Code, der für Sie warnungsfrei ist, eine Warnung für eine andere Person und dann müssen sie in Ihr Build-System graben, um es auszuschalten.Ich habe mit C ++ angefangen. Als ich zum Lernen von CI überging, stellte ich sicher, dass ich extra-anal bin:
quelle
Holen Sie sich das Handbuch für die von Ihnen verwendete GCC-Version, finden Sie alle verfügbaren Warnoptionen und deaktivieren Sie nur diejenigen, für die Sie einen zwingenden Grund haben. (Zum Beispiel nicht modifizierbare Header von Drittanbietern, die Ihnen sonst viele Warnungen geben würden.) Dokumentieren Sie diese Gründe. (Im Makefile oder wo immer Sie diese Optionen festlegen.) Überprüfen Sie die Einstellungen in regelmäßigen Abständen und bei jedem Upgrade Ihres Compilers.
Der Compiler ist dein Freund. Warnungen sind dein Freund. Geben Sie dem Compiler so viel Gelegenheit, Sie über mögliche Probleme zu informieren.
quelle
Ich benutze auch:
Um diese bösen Fehler abzufangen, die auftreten können , wenn ich Code schreibe, der auf dem Überlaufverhalten von Ganzzahlen beruht.
Und:
Dies ermöglicht einige Optionen, die auch schön sind. Die meisten sind jedoch für C ++.
quelle
Normalerweise kompiliere ich mit "-W -Wall -ansi -pedantic", um maximale Qualität und Portabilität des Codes zu gewährleisten.
quelle
-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter
Für den Modus "Verletze mich reichlich" lasse ich die -Wno ...
Ich möchte meine Code-Warnung frei haben, besonders mit C ++. Während C-Compiler-Warnungen häufig ignoriert werden können, weisen viele C ++ - Warnungen grundlegende Fehler im Quellcode auf.
quelle
Foo(int dndu, int dndv) : dndu_(dndu), dndv_(dndu) {}
-> relativ schwer zu erkennen. Wenn Sie sich über diese Warnung ärgern, sollten Sie den Parameter einfach übertreffenfoo (int /*q*/)
. Dies erhöht auch die Lesbarkeit Ihres Codes.-Pedantische Fehler
quelle
clang
den C-Compiler des LLVM-Projekts zu und dann zu kompilieren,-Weverything
und Sie werden sehen, wie viel Spaß das Kompilieren wirklich machen kann (einige der Warnungen sind total verrückt, aber technisch korrekt).-Wfloat-gleich, -Whadow, -Wmissing-Prototypen,
quelle
-Wredundant-Deklarationen -Wnested-externs -Wrict-Prototypen -Wextra -Werror-implizite-Funktionsdeklaration -Wunused -Wno-unused-Wert -Wreturn-Typ
quelle
Im Moment benutze ich:
-Wall -W -Wextra -Wconversion -Wshadow -Wcast-Qual -Wwrite-Strings -Werror
Ich habe diese Liste hauptsächlich aus dem Buch "Eine Einführung in gcc" und dann aus Ulrich Dreppers Empfehlung zur defensiven Programmierung ( http://people.redhat.com/drepper/Defensive-slides.pdf ) entnommen .
Aber ich habe keine Wissenschaft hinter meiner Liste, es fühlte sich einfach wie eine gute Liste an.
/ Johan
Hinweis: Ich mag diese pedantischen Flaggen allerdings nicht ...
Hinweis: Ich denke, dass -W und -Wextra mehr oder weniger dasselbe sind.
quelle
Ich benutze im Allgemeinen nur
quelle
Die Warnung zu nicht initialisierten Variablen funktioniert nur, wenn Sie dies angeben. Daher nehme
-O
ich Folgendes in meine Liste auf:quelle
-Wfatal-errors
quelle