这个问题已经有了答案:
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;
};