W8015 プロトタイプで使われる前に '型' の宣言が必要 (-wdpu) (C++)
(この警告を抑止するコマンドラインオプションは -w-dpu)
関数プロトタイプがまだ宣言されていない構造体型を参照する場合に,プロトタイプ内部の宣言がプロトタイプ外部の宣言と同じではありません。
次に例を示します。
int func(struct s *ps); struct s /* ... */ ;
func のプロトタイプのスコープには "struct s" がないため,パラメータ ps の型は,未定義の構造体 s へのポインタであり,後で宣言される "struct s" と同じではありません。
これにより,互換性がない型に関する警告とエラーメッセージが後で発生するため,この警告メッセージがないと非常に不可解な現象になってしまいます。
この問題を修正するには,この構造体を参照するすべてのプロトタイプの前に "struct s" の宣言を移動するか,その場所に不完全な型宣言 "struct s;" を追加します。
関数パラメータが構造体へのポインタではなく構造体である場合,不完全な宣言では十分でありません。
プロトタイプの前に構造体宣言を配置する必要があります。