Frage

Was für gcc-Optionen soll ich verwenden ANSI C (C99) Warnungen / Fehler zu erzwingen? gcc (GCC) 3.4.2 (mingw-special)

Ich verwende: gcc -pedantic -ansi -std = c99 ist das richtig?

War es hilfreich?

Lösung

Die -ansi Flagge ist mit der -std=c89 Flagge synonym.

Nur mit -std=c99 mit -pedantic sollte ausreichend sein.

Wenn Sie Zweifel haben, können Sie immer auf die GCC-Dokumentation verweisen. Ab GCC 3.4.2, ist das Kapitel zu lesen 2 - Sprechen Standards Unterstützt von GCC

.

Andere Tipps

Dies ist eine alte Frage, aber ich wollte nur ein paar zusätzliche Punkte hinzuzufügen.

Erstens, unabhängig von der Menge der generischen Befehlszeilenoptionen Sie GCC liefern, die derzeit nicht zu sein scheinen möglich GCC zu machen zu berichten alle Einschränkungsverletzungen als „Fehler“ und alles sonst als „Warnungen“. Einige der Diagnosemeldungen GCC-Berichte als „Warnungen“ sind in der Tat Einschränkungsverletzungen (zB „Fehler“) aus der Sicht der C-Sprache, aber es gibt keine Möglichkeit, GCC zu zwingen, diese Tatsache zu erkennen und ein „Fehler“ Diagnose erzeugen. Durchaus möglich, dass eine genauere Trennung kann durch die Feinabstimmung individueller Warntypen erreicht werden, aber ich bin nicht sicher, ob GCC Einstellungen ausreichende Granularität bieten eine gute Übereinstimmung zu erreichen.

Zweitens bietet GCC -pedantic-errors Option, anstelle von einfachen -pedantic verwendet werden kann, die eine genauere ermöglichen sollten Klassifizierung von Diagnosemeldungen in den „Fehler“ (wie oben beschrieben), und „Warnungen“. Es ist zwar noch nicht perfekt.

P. S. Die Sprachspezifikation nicht erforderlich / definiert die Trennung von Diagnosemeldungen in „Fehler“ und „Warnungen“, aber in der Praxis viele Programmierer erwarten Einschränkungsverletzungen als „Fehler“ gemeldet werden. Ich dachte, dass Sie vielleicht etwas wie die gemeint haben, wenn Sie erwähnten in Ihrer Frage „Warnungen / Fehler erzwingen“.

-ansi
    In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.

ANSI C ist nicht die gleiche wie C99 (noch) nicht. Auch -Wall könnte auch von Interesse sein, aber nur -pedantic sollte das tun, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top