私は初心者ではありません。次のイディオムに精通しています。
typedef struct Foo_ Foo;// I know typedef struct Foo Foo is fine, I'm just trying to make it clearer
struct Foo_
{
int value;
Foo *link;
};
宣言される前に名前(識別子)を使用することは許可されていないというのが私の理解であるため、私は突然混乱しました。しかし、宣言typedef struct Foo_ Foo
では、識別子Foo_
はまだ存在していません!なぜコンパイラはこれが起こるのを許可するのですか?誰かがこれに光を当てて、この種の構文の正当性を私に説明してくれませんか?
ウィキペディアの引用:目的はtypedef
、既存のタイプに代替名を割り当てることです。
---> 8---
たくさんの有益な情報をありがとうございました。