# 9.3. Compiler Warnungen

Im folgenden werden die möglichen Einstellungen für die Compiler-Warnungen des Projekt-Optionen Dialogs, Seite 3, erläutert. Die Erklärungen selbst sind der `man`-page des GCC, egcs Version 1.1.1 entnommen. Die Warnungen selbst sind diagnostische Meldungen, die anzeigen, das die entsprechenden Programmanweisungen möglicherweise Fehler verursachen.

-Wall

  Standard-Warnungen kombiniert

-W

  Compiliere mit -W. Diese Einstellung fügt Warnungen hinzu, die nicht in -Wall enthalten sind. Bitte lesen Sie die GCC-Info für weitere Informationen.

-Wtraditional

  Warnungen über bestimmte Konstruktionen ausgeben, die sich unter traditionellem und ANSI C verschieden verhalten.

-Wundef

  Warnung anzeigen, falls ein undefinierter Bezeichner in einer '&#;if' Direktive verwendet wird

-Wshadow

  Warnung anzeigen, falls eine lokale Variable eine andere lokale Variable überdeckt.

-Wid-clash-LEN

  Warnung anzeigen, falls zwei verschieden Bezeichner in den ersten LEN Buchstaben übereinstimmen. Dies kann bei der Übersetzung eines Programms mit einigen nicht mehr zu verwendenden Compilern helfen.

-Wlarger-then-LEN

  Warnung anzeigen, falls ein Objekt mit einer Größe über LEN Bytes definiert wird.

-Wpointer-arith

  Warne vor allem, das von der Größe eines Funktionstypen oder von einem void abhängt. GNU C weist diesen Typen aufgrund von Komfort von Berechnungen mit void * Zeigern und Zeigern auf Funktionen eine Größe von 1 zu.

-Wbad-function-cast

  Warne, wenn ein Funktionsaufruf eine Umwandlung zu einem nicht passenden Typ ist. Z. B., wenn int malloc() eine Umwandlung zu irgendwas * ist.

-Wcast-equal

  Warne, wenn ein Zeiger gecastet wird und dabei ein Typqualifizierer beim Ziel verloren ginge.Z.B., wenn ein const char * nach char * gecastet würde.

-Wcast-align

  Warne, wenn ein Zeiger so gecastet wird, daß das erforderliche Alignment des Zieles vergrößert würde. Z.B. wenn auf Maschinen, auf denen Integer nur 2- oder 4-Byte aligned sein können char * nach int * gecastet werden soll.

-Wwrite-strings

  Gebe Stringkonstanten den Typ const char&[;Länge]i, so daß das Kopieren einer solchen Adresse in einen nicht const char * Zeiger eine Warnung erzeugt. Diese Warnungen können helfen zur Compilezeit Code zu finden, der versucht in eine Strinkonstante zu schreiben, aber nur wenn man sehr aufmerksam beim Gebrauch von const in Deklarationen und Prototypen war. Ansonsten werden diese Meldungen nur lästig, weshalb sie mit -Wall nicht erzeugt werden.

-Wconversion

  Warne, wenn ein Prototyp eine Typumwandlung verursacht, die anders ist als die, die durchgeführt würde, wäre der Prototyp nicht da. Dies beinhaltet Konvertierungen von Festpunkt nach Fließkomma und umgekehrt und Konvertierungen, die die Breite oder Vorzeichenbehaftung eines Festpunktargumentes betreffen, es sei den es entspräche der Standarderweiterung. Ebenso wird gewarnt, wenn eine negative, ganzzahlige Konstante implizit in einen vorzeichenlosen Typ umgewandelt wird.

-Wsign-compare

  Warne, wenn ein Vergleich zwischen signed und unsigned ein falsches Ergebnis geben könnte, weil signed zu unsigned umgewandelt wird.

-Waggregate-return

  Warne, wenn eine Funktion, die eine Struktur oder Union zurückgibt, definiert oder aufgerufen wird.

-Wstrict-prototypes

  Warne, wenn eine Funktion ohne Argumenttypen deklariert oder definiert wird. (Eine Funktionsdefinition im alten Stil ist ohne Warnung erlaubt, wenn vorher eine Deklaration steht, die die Argumenttypen deklariert.)

-Wmissing-prototypes

  Warne, wenn eine globale Funktion ohne vorherige Prototypdeklaration definiert wird (auch wenn die Def. selbst einen Prototyp enthält). Benutzen Sie diese Option, um globale Funktionen zu finden, die nicht in Headerdateien deklariert sind.

-Wmissing-declarations

  Warne, wenn eine globale Funktion ohne vorherige Deklaration definiert wird (auch wenn die Def. selbst einen Prototyp enthält. Benutzen Sie diese Option, um globale Funktionen zu finden, die nicht in Headerdateien deklariert sind.

-Wredundant-decls

  Warne, wenn etwas mehr als einmal in demselben Sichtbarkeitsbereich deklariert wurde (auch in Fällen, wo die mehrfache Deklaration gültig ist und nichts ändert).

-Wnested-externs

  Warne, wenn eine extern Deklaration in einer Funktion angetroffen wird.

-Winline

  Warne, wenn eine Funktion nicht 'inline' sein kann, sie aber als 'inline' deklariert wurde, oder wenn die -finline-functions-Option angegeben wurde.

-Wold-style-cast

  Warne, wenn eine alte (C-Stil) Umwandlung im Programm benutzt wird.

-Woverloaded-virtual

  Warne, wenn die Deklaration einer Methode in einer abgeleiteten Klasse möglicherweise ein fehlerhafter Versuch ist, eine virtuelle Methode zu definieren (nur C++). In einer abgeleiteten Klasse müssen die Definitionen virtueller Methoden in der Schnittstelle mit der Deklaration dieser virtuellen Methode in der Basisklasse übereinstimmen. Mit dieser Option warnt der Compiler, wenn eine Funktionsdeklaration im Namen, aber nicht in der Schnittstelle mit der Deklaration einer virtuellen Methode in der Basisklasse übereinstimmt, wenn also die virtuelle Methode nicht definiert, sondern überladen würde.

-Wsynth

  Warne, wenn das Syntheseverhalten von g++ nicht mit dem von cfront übereinstimmt.

make all warnings into errors

  (-Werror) Warnungen als Fehler ausgeben. Die Kompilierung wird bei jeder Warnung abgebrochen.

Für eine Release Version Ihrer Anwendung sollten Sie -Wall einschalten.