0

可能重复:
C 中的循环定义

typedef struct{
  node *next;
  node *last;
} doubleLink;

typedef struct{
 doubleLink doubleLink;
 int data;
} node;

以上是用双链接定义对象的注定失败的尝试。将任何一个 typedef 放在另一个之前会导致“未知类型”的编译错误一个明显的办法是将 doubleLink 中的指针类型说明符更改为void * 但我想知道是否有更多“无害”的解决方案,比如说,也许我可以声明节点结构没有定义它?

我知道这一定是一个常见问题,但我不知道我可以通过什么关键字找到它。

4

1 回答 1

1

添加前向声明node

struct node;
typedef struct{
  struct node *next;
  struct node *last;
} doubleLink;

当你使用指针时,你不需要在定义之前完全定义这个类型doubleLink

于 2012-10-09T10:38:19.100 回答