在另一个头文件中包含标头

时间:2011-03-17 19:02:29

标签: c header include

我在.h文件中定义了struct item。现在我在另一个.h中定义了另一个struct tPCB,它是同一个项目的一部分,我需要tPCB拥有item。我认为只是创建相同的TurboC项目的一部分将允许我在另一个头文件中使用item,但编译器会抛出“undefined type: ite”。

我想我不得不在第二个包含第一个标题,但是我看到了相同的代码,但没有这样做。

除了添加#include行以使其有效之外,还有其他方法吗?

5 个答案:

答案 0 :(得分:8)

如果您的.c #include按正确顺序排列了两个.h文件,它就可以了。这可能就是你记得的情况。最安全的方法是#include每个定义依赖关系的文件,并依赖每个.h中的包含保护来防止事物被多重定义。

答案 1 :(得分:1)

抱歉,在C中你无法访问结构的定义,在另一个头文件中不包含该文件(通过#include)。 #include说明如下。

因此,假设包含项结构定义的头文件称为“item.h”,并且头文件包含“tPCB.h”中tPCB结构的定义。在tPCB.h的顶部,您应该输入以下语句:

#include "item.h"

这应该使tPCB.h文件能够访问item.h中的所有定义。

答案 2 :(得分:1)

永远不要在头文件中放置变量定义(即分配它们)。这有很多不同的原因,其中两个主要原因是程序设计不佳以及链接器错误泛滥。

如果你需要全局公开一个变量(实际上你需要这么做的情况很少),那么在h文件中将它声明为extern并将其分配到相应的C文件中。 / p>

答案 3 :(得分:0)

您需要使用#include。在C中,一切都是明确的;不要指望它能通过魔法发挥作用。

答案 4 :(得分:0)

在“另一个.h”中,#include <a .h file>

精化:

在定义struct tPCB的文件中,您需要#include定义struct item的文件。