【发布时间】:2012-11-29 12:51:17
【问题描述】:
我不是初学者,对下面的成语很熟悉:
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 ---
感谢大家提供这么多有用的信息。
【问题讨论】: