GCC-Optionen zum erzwingen von Ansi-C-standard-check?
Was gcc Optionen sollte ich verwenden, um zu erzwingen, ANSI-C (C99) Warnungen/Fehler?
gcc (GCC) 3.4.2 (mingw-special)
Bin ich mit:
gcc -pedantic-ansi -std=c99
ist das richtig?
ANSI veröffentlicht die ursprüngliche C-standard von 1989. ISO veröffentlicht seine version der gleichen Norm im Jahr 1990, und ANSI offiziell verabschiedet, die version. ISO veröffentlicht die neuen Versionen der standard in 1999 und 2011 und ANSI verabschiedet hat, jeder von Ihnen, so dass die früheren Editionen offiziell veraltet. Verwirrend, den Begriff "ANSI-C" ist immer noch Häufig (und fälschlicherweise) verwendet, um auf die Sprache definiert, die von der 1989/1990 Editionen und
gcc -ansi
bezieht sich noch auf die version. Ich schlage vor, dass der Begriff "ANSI-C" ist mehrdeutig und sollte vermieden werden. Beziehen sich auf C89/C90, C99 oder C11 statt.InformationsquelleAutor AlfaTeK | 2009-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
-ansi
Flagge ist gleichbedeutend mit der-std=c89
Flagge.Nur mit
-std=c99
mit-pedantic
sollte ausreichend sein.Wenn Sie Zweifel haben, können Sie immer siehe GCC-Dokumentation. Als der GCC 3.4.2, die Kapitel zu Lesen ist 2 - Sprachstandards Unterstützt durch GCC.
InformationsquelleAutor James McNellis
Dies ist eine alte Frage, aber ich wollte nur hinzufügen, einige zusätzliche Punkte.
Erstens, unabhängig von dem Satz von Standard-Befehlszeilenoptionen, die Sie liefern, GCC, momentan ist es scheint nicht möglich zu sein, GCC-Bericht alle Verstöße gegen die Vorgaben als "Fehler" und alles andere als "Warnungen". Einige der Diagnose-Meldungen GCC Berichte als "Warnungen" sind in der Tat Verstöße gegen die Vorgaben (d.h. "Fehler") aus der Sicht der Sprache C, aber es gibt keine Möglichkeit, zu erzwingen, GCC, zu erkennen, dass Tatsache und erzeugen einen "Fehler" - Diagnose. Sehr wahrscheinlich, dass eine genauere Trennung kann erreicht werden, indem fein-tuning einzelner Arten von Warnmeldungen, aber ich bin mir nicht sicher, GCC Einstellmöglichkeiten sorgen für ausreichende Granularität zu erreichen, die eine gute übereinstimmung.
Zweitens, GCC bietet
-pedantic-errors
option kann verwendet werden, anstelle von einfachen-pedantic
, die soll ermöglichen, dass eine genauere (wie oben beschrieben) Klassifizierung der Diagnosemeldungen in "Fehler" und "Warnungen". Es ist noch nicht perfekt aber.P. S. Die Sprache-Spezifikation nicht erforderlich ist/definieren Sie die Trennung von Diagnose-Meldungen in "Fehler" und "Warnungen", aber in der Praxis viele Programmierer erwarten, dass Verstöße gegen die Vorgaben gemeldet werden, als "Fehler". Ich dachte, dass Sie vielleicht gemeint haben, so etwas wie, dass, wenn Sie erwähnt, "die Durchsetzung der Warnungen/Fehler" in deiner Frage.
-Werror
). Dann ist es egal, wenn einige Fehler sind falsch berichtet, als Warnungen.InformationsquelleAutor AnT
ANSI-C ist nicht das gleiche wie C99 (noch) nicht. Auch
-Wall
könnte auch von Interesse sein, aber nur-pedantic
sollte das tun, was Sie wollen.InformationsquelleAutor Mikael S