C - 字段类型不完整

时间:2017-01-28 21:32:45

标签: c struct

在下面的表示中,

function myFunction () {
    console.log('Hello World');
}
myFunction.greet = 'Hello JavaScript!';

console.log(Object.keys(myFunction));

编译器为第二个字段提供以下错误,但不是第三个字段,

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

如何理解这个错误?

1 个答案:

答案 0 :(得分:8)

错误意味着您尝试将成员添加到尚未完全定义的类型的struct,因此编译器无法知道其大小以确定对象布局。

在您的特定情况下,您尝试让struct Cat将自己的完整对象作为成员(mother字段)。类型定义中的那种无限递归当然是不可能的。

尽管如此,结构可以包含指向其他实例的指针。因此,如果您按如下方式更改定义,则它将是有效的strcut

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