e511.c
構造体の二重定義





コード例:
/* -------------------------------------------------
* プロジェクトで使用するヘッダー prj_std.h の一部
*/
struct SA {
char *name ;
int deposit ;
} ;
/* -------------------------------------------------
* ソースファイル
*/
#include "prj_std.h"
/* prj_std.h で定義されているにも関わらず */
/* 再度構造体 SA の型を定義 */
struct SA {
char *name ;
float deposit ;
} ;
解説:
メンバ変数の名前、型をまったく等しく再定義した場合でも、この警告は出力されます。
ここで問題となるのは、単に構造体の再定義してしまったことではなく、
『プロジェクトの構成をよく理解せずにコーディングしている』
というプログラマーの姿勢になりがちです。
落ち着いて、全体の構成を把握し、
他の "車輪の再開発" に注意してみてください。