可能重复:
Circular definition in C
typedef struct{
node *next;
node *last;
} doubleLink;
typedef struct{
doubleLink doubleLink;
int data;
} node;
以上是注定用双链接定义对象的尝试。
将typedef放在另一个之前会产生“未知类型”的编译错误
一个明显的办法是将doubleLink中的指针类型说明符更改为void *
但我想知道是否还有更多“无害”的解决方案
我可以声明节点结构而不定义它吗?
我知道这一定是一个经常被问到的问题,但我不知道我可以找到什么关键字。
答案 0 :(得分:1)
添加node
的正向声明:
struct node;
typedef struct{
struct node *next;
struct node *last;
} doubleLink;
在使用指针时,您不需要在doubleLink
的定义之前完全定义此类型。