構造体のメンバーを複数回宣言することに対するCの規則は、警備員を含めることが必要である主な理由であるように私には思えます。「header.h」に次のものがある場合:
struct s {
int a;
char b;
};
また、ファイル「ah」#includeのheader.hの場合、struct sが2回定義されているため、「ah」と「header.h」の両方を含めることはできません。
私の質問は、これを行うことの問題は何ですか?構造体の複数の同一の定義を許可できないのはなぜですか?これにより、インクルードガードが不要になり、Cヘッダーファイルが大幅にクリーンアップされます。
Cの規則では、複数の宣言が許可されていますが、定義は1つだけです。何らかの理由で、構造体のメンバーを指定することは、変数や関数を定義していなくても、「定義」と呼ばれます。