
Ausführliche und ausführliche Warnflags für C-Kompilierungen mit g
Gcc bietet einen umfassenden Satz von Warnflags, um Entwicklern bei der Erkennung potenzieller Probleme zu helfen ihren Code. Um gründliche und ausführliche Warnungen in C zu aktivieren, beachten Sie die folgenden Empfehlungen:
Wichtige Warnungen:
- -pedantic: Halten Sie sich an strenge Richtlinien C-Sprachstandards.
- -Wall: Aktivieren Sie alle allgemein akzeptierten Standards Warnungen.
- -Wextra: Erweitern Sie den Warnungsbereich über -Wall hinaus.
- -Wcast-align: Erkennen Sie falsch ausgerichtete Zeigerumsetzungen.
- -Wcast-qual: Warnung vor Änderungen im Zeigertyp Qualifizierer.
- -Wctor-dtor-privacy: Heben Sie Probleme mit Zugriffsmodifikatoren für Klassenkonstruktoren und -destruktoren hervor.
- -Wdisabled-optimization: Code identifizieren das kann optimiert werden, ist es aber nicht.
- -Wformat=2: Verbessern Sie die Handhabung von Formatspezifizierern während der Kompilierung.
- -Winit-self: Verhindern Sie, dass Variablen für sich selbst neu initialisiert werden.
- -Wlogical-op: Erkennen Mögliche Probleme mit der Operatorpriorität.
- -Wmissing-declarations: Warnung vor fehlenden Deklarationen von Variablen und Funktionen.
- -Wmissing-include-dirs: Markieren Sie fehlende Include-Verzeichnisse.
- -Wnoexclusive: Ermutigen Sie Mechanismen zur Ausnahmebehandlung.
- -Wold-style-cast: Identifizieren Sie potenzielle Codekompatibilität Probleme.
- -Woverloaded-virtual: Warnung vor Überladungen virtueller Methoden.
- -Wredundant-decls: Auf redundante Deklarationen hinweisen.
- -Wshadow: Verhindern Sie das unbeabsichtigte Abschatten von Variablen.
- -Wsign-conversion: Mögliche Fehler bei der Zeichenkonvertierung erkennen.
- -Wsign-promo: Mögliche Probleme bei der Zeichenwerbung hervorheben.
- -Wstrict-null-sentinel: Erhöhen Sie die Codesicherheit durch die Steuerung von Null-Sentinel Werte.
- -Wstrict-overflow=5: Beschränken Sie die Stufe des Ganzzahlüberlaufs auf fünf Warnungen.
- -Wswitch-default: Stellen Sie sicher, dass alle Warnungen vollständig sind Handhabung von Switch-Anweisungen.
- -Wundef: Warnung vor undefinierten Variablen oder Makros.
- -Wno-unused: Schließt nicht verwendete Variablenwarnungen aus, um den Fokus auf kritischere Probleme zu lenken.
Optionale, aber fragwürdige Warnungen:
- -Wdisabled-optimization: Kann darauf hinweisen Suboptimaler Code, aber nicht unbedingt ein Fehler.
- -Wfloat-equal: Verursacht möglicherweise falsch positive Ergebnisse für sichere Gleichheitsvergleiche.
- -Wold-style-cast : Kann bei Drittanbietern falsch positive Ergebnisse enthalten Bibliotheken.
- -Wsign-conversion: Erfordert sorgfältige Beachtung der Datentypen, um Fehler zu vermeiden.
- -Wsign-promo: Ähnliche Überlegungen wie – Wsign-conversion.
- -Wswitch-default: Erzwingt die explizite Behandlung von Switch-Anweisungsfällen, ist aber möglich ermüdend sein.
Auszuschließende Warnungen:
Diese Warnungen werden aufgrund möglicher Fehlalarme oder eingeschränkter Nützlichkeit weggelassen:
- -Wabi: Erfordert die Kompilierung von Binärdateien aus verschiedenen Quellen.
- -Waggregate-return: Kann auf implizite Datentypkonvertierungen hinweisen.
- -Wconversion: Kann Warnungen für harmlose implizite Konvertierungen generieren.
- -Weffc : Kann mit nicht verwandten Elementen überladen sein Warnungen.
- -Winline: Gilt möglicherweise nicht für alle Inline-Methodenszenarien.
- -Winvalid-pch: Gilt nicht für Projekte, die Verwenden Sie keine vorkompilierten Header.
- -Wmissing-format-attribute: Erfordert nicht häufig verwendete GNU-Erweiterungen.
- -Wpadded: Erfordert manuelle Optimierung von Klassenlayouts.
- -Wstack-protector: Erfordert bestimmte Compiler-Flags zum Stapelschutz.
- -Wstrict-aliasing=3: Angebote begrenzte zusätzliche Warnungen im Vergleich zu niedrigeren Ebenen.
- -Wswitch-enum: Zu restriktiv und möglicherweise nicht für alle Anwendungsfälle geeignet.
- -Wunsafe-loop -Optimierungen: Kann in bestimmten Szenarien falsche Warnungen generieren.