次のコードがあります。
typedef struct Y {int X;} X;
enum E {X};
これはエラーを生成します:
エラー: 'X' が別の種類のシンボルとして再宣言されました
私が知っているように、C では、構造体、共用体、および列挙型のタグと、それらのメンバーの名前空間が暗黙的に定義されています。では、なぜE::X
typedef 構造 tag と衝突するのかわかりませんX
か?
Cの名前空間とは正確には何ですか?
次のコードがあります。
typedef struct Y {int X;} X;
enum E {X};
これはエラーを生成します:
エラー: 'X' が別の種類のシンボルとして再宣言されました
私が知っているように、C では、構造体、共用体、および列挙型のタグと、それらのメンバーの名前空間が暗黙的に定義されています。では、なぜE::X
typedef 構造 tag と衝突するのかわかりませんX
か?
Cの名前空間とは正確には何ですか?