Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
たとえば、次の有効な C コードはありますか?
typedef struct { /* ... */ } foo; typedef struct { foo foo; /* Is it ok that 'foo' == 'foo'? */ } bar;
はい、これは有効な C です (ただし、読み取り不能であり、避ける必要があります)。
型識別子と構造体メンバー識別子は、異なる名前空間に存在します。
C99、6.2.3p1 識別子の名前空間を参照してください。
[...] 次のように、識別子のさまざまなカテゴリに個別の名前空間があります。 — 構造体、共用体、および列挙のタグ [...] — 構造体または組合のメンバー 各構造体または共用体には、そのメンバー用に個別の名前空間があります [...] — 通常の識別子と呼ばれる他のすべての識別子 [...]
[...] 次のように、識別子のさまざまなカテゴリに個別の名前空間があります。
— 構造体、共用体、および列挙のタグ [...]
— 構造体または組合のメンバー 各構造体または共用体には、そのメンバー用に個別の名前空間があります [...]
— 通常の識別子と呼ばれる他のすべての識別子 [...]