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

问题描述:

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

我想我无论如何都必须包括关于第二个第一头,但是我已经看到了同样类似的代码没有这样做的工作。

是否有任何其他的方式不仅仅是增加一个#include线,使其工作?

如果您.C #include■在正确的顺序两个.h文件,它会工作。这可能是您记忆中发生的事情。最安全的过程是每个文件定义你的依赖关系,并依靠每个.h中的包含守护进程来防止被多重定义。

+0

@nmichaels,谢谢。易于修复,建议保持不变。 – 2011-03-17 19:13:08

+0

好的,所以我已经把include移到了第一个.h到主要.c的第一行,我知道它是编译器要读取的第一行,问题仍然存在。 – bluehallu 2011-03-17 19:17:25

+0

@Hallucynogenyc,你需要在你的main.c中包含两个.h。首先是定义'item',然后是定义'tPCB'的那个。更好的办法是在定义'tPCB'的.h中放入'#include'。 – 2011-03-17 19:20:49

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

+0

这里有一些魔术 - 预编译头文件。 – hoha 2011-03-17 19:08:03

在你的 “另一.H”,#include <a .h file>

阐述:

在定义struct tPCB文件,你需要#include定义struct item文件。

对不起,C中没有办法可以访问一个结构的定义,在另一头文件,而不包括该文件(通过一个#include)。 #include的说明如下。

因此,可以说包含项目结构定义的头文件被称为“item.h”,并且头文件包含“tPCB.h”中tPCB结构的定义。在tPCB.h的顶部,你应该把下面的语句:

#include "item.h" 

这应该给于item.h.所有定义的tPCB.h文件访问

永远不要把变量定义(即,分配他们)在头文件。这对许多不同的原因是不利的,其中两个主要原因是程序设计不佳和链接器错误泛滥。

如果您需要在全球范围内暴露的变量(没有很多情况下,你真正需要做的),然后把它声明为在H-文件extern并在相应的C文件分配它。