我不是初学者,我对以下成语非常熟悉:
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 ---
谢谢大家提供这么多有用的信息。