【问题标题】:C Field has incomplete type, without forward declaration [closed]C字段的类型不完整,没有前向声明[关闭]
【发布时间】:2016-11-06 07:20:38
【问题描述】:

我不断收到“字段具有不完整的类型错误”,但我在我的代码中找不到该类型的任何前向声明,或者它的结构中的任何类型——除了指针字段。我尝试递归 grep 文件夹,但仍然找不到任何前向声明。

如何让 GCC 告诉我它认为前向声明在哪里?或者为什么它不完整?

试图编译这个文件:

https://github.com/pdJeeves/CreaturesLib/blob/master/src/biochemistry/emitter.c

在这包括错误:

https://github.com/pdJeeves/CreaturesLib/blob/master/src/creature/creature.h

与会员

“结构大脑”

【问题讨论】:

  • 您是否缺少头文件(或它的路径)?
  • 或许您可以将struct 代码添加到问题中。
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码.没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整且可验证的示例。
  • 它说它不完整,因为它找不到前向声明,所以它不能告诉你它应该在哪里:) 我们需要实际的代码来帮助你。
  • 产生编译器错误的那一行是 GCC 向您指出是哪个变量类型导致的。出于显而易见的原因,GCC 无法告诉您它找不到的代码的位置。

标签: c gcc incomplete-type


【解决方案1】:

您的brain.horgan.h 都以

开头
#ifndef _organ_h_
#define _organ_h_

这意味着在您包含第一个之后,将不会包含第二个。

您在brain.h 内的多个地方使用#ifndef _something_h_ 是不寻常的。您应该简单地包含相关的标题,而不是重新定义它们的内容。 IE。只需 #include lobe.h,而不是像 struct BrainLobe; 那样声明一个空的前向声明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2015-09-03
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多