W8015 Deklarieren Sie 'typ' vor der Verwendung im Prototyp (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

(Die Kommandozeilenoption zur Unterdrückung dieser Warnung lautet -w-dpu)

Wenn sich ein Funktionsprototyp auf einen Strukturtyp bezieht, der nicht zuvor deklariert wurde, ist die Deklaration innerhalb und außerhalb des Prototyps nicht identisch.

Ein Beispiel:



 int func(struct s *ps);  struct s   /* ... */ ;



Da beim Prototyp func der Gültigkeitsbereich von "struct s" nicht bekannt ist, ist der Typ des Parameters ps ein Zeiger auf ein nicht definiertes "struct s" und damit nicht derselbe wie das später deklarierte "struct s".

Dies führt später zu mysteriösen Warnungen und Fehlermeldungen bezüglich inkompatibler Typen, die ohne diese Warnung kaum erklärbar wären.

Zur Lösung des Problems sollte die Deklaration von struct s vor jedem Prototyp stehen, der sich auf sie bezieht, oder die unvollständige Typendeklaration "struct s;" vor jedem Prototyp, der sich auf struct s bezieht.

Ist der Funktionsparameter eine Struktur anstatt eines Zeigers auf eine Struktur, reicht die unvollständige Deklaration nicht aus.

Die Deklaration der Struktur muss dann vor dem Prototyp stehen.