声明内部结构包含对外部结构的引用

时间:2012-10-09 10:36:08

标签: c

  

可能重复:
  Circular definition in C

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

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

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

我知道这一定是一个经常被问到的问题,但我不知道我可以找到什么关键字。

1 个答案:

答案 0 :(得分:1)

添加node的正向声明:

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

在使用指针时,您不需要在doubleLink的定义之前完全定义此类型。