在另一个头文件中包含头文件
我在.h文件中定义了struct item
。现在我在另一个.h中定义另一个struct tPCB
,它是同一个项目的一部分,我需要tPCB
有一个item
。我认为只是使用同一个TurboC项目的一部分将允许我在其他头文件中使用项目,但编译器会抛出“undefined type: ite
”。在另一个头文件中包含头文件
我想我无论如何都必须包括关于第二个第一头,但是我已经看到了同样类似的代码没有这样做的工作。
是否有任何其他的方式不仅仅是增加一个#include
线,使其工作?
如果您.C #include
■在正确的顺序两个.h文件,它会工作。这可能是您记忆中发生的事情。最安全的过程是每个文件定义你的依赖关系,并依靠每个.h中的包含守护进程来防止被多重定义。
在你的 “另一.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文件分配它。
@nmichaels,谢谢。易于修复,建议保持不变。 – 2011-03-17 19:13:08
好的,所以我已经把include移到了第一个.h到主要.c的第一行,我知道它是编译器要读取的第一行,问题仍然存在。 – bluehallu 2011-03-17 19:17:25
@Hallucynogenyc,你需要在你的main.c中包含两个.h。首先是定义'item',然后是定义'tPCB'的那个。更好的办法是在定义'tPCB'的.h中放入'#include'。 – 2011-03-17 19:20:49