这个问题已经有了答案:
Next struct item,incomplete type [duplicate]
6个答案
在下面的陈述中,

struct Cat{
  char *name;
  struct Cat mother;
  struct Cat *children;
};

编译器对第二个字段而不是第三个字段给出以下错误,
 error: field ‘mother’ has incomplete type
   struct Cat mother;
              ^

如何理解这个错误?

最佳答案

该错误意味着您试图将成员添加到尚未完全定义的类型的struct中,因此编译器无法知道其大小以确定对象布局。
在您的特定情况下,您尝试让struct Cat将其自身的完整对象作为成员(字段mother)。类型定义中的那种无限递归当然是不可能的。
然而,结构可以包含指向自身其他实例的指针。因此,如果您按如下方式更改定义,它将是一个有效的struct

struct Cat{
  char *name;
  struct Cat *mother;
  struct Cat *children;
};

09-10 04:19
查看更多