-
阿晨1998
您可以定义typedef并在一个语句中首先声明该结构,然后在后续定义中定义该结构。typedef struct A A;struct A{ int a; int b; A* next;};编辑:正如其他人提到的那样,没有前向声明,结构名称在结构定义内仍然有效(即,您可以使用struct A),但是在定义类型定义完成后,typedef才可用(因此,使用只是A无效的) )。仅使用一个指针成员,这可能并不太重要,但是,如果您具有包含许多自类型指针的复杂数据结构,则可能会有所减少。
-
HUX布斯
除了第一个答案之外,如果没有typedef和正向声明,这也可以。struct A { int a; int b; struct A *next; };
-
繁星淼淼
拜托,您使用的是C语言,而不是C ++语言。如果您真的必须typedef一个结构体(大多数与我一起工作的程序员都不会¹),请执行以下操作:typedef struct _A { int a; int b; struct _A *next;} A;以清楚地区分_A(在struct名称空间中)和A(在类型名称空间中)。¹ typedef隐藏它所指向的类型的大小和存储量-(我同意)论点是,在像C这样的低级语言中,试图隐藏任何东西都是有害的且适得其反。struct A随时随地习惯打字struct A。