2011-03-17 132 views
9

我在.h文件中定義了struct item。現在我在另一個.h中定義另​​一個struct tPCB,它是同一個項目的一部分,我需要tPCB有一個item。我認爲只是使用同一個TurboC項目的一部分將允許我在其他頭文件中使用項目,但編譯器會拋出「undefined type: ite」。在另一個頭文件中包含頭文件

我想我無論如何都必須包括關於第二個第一頭,但是我已經看到了同樣類似的代碼沒有這樣做的工作。

是否有任何其他的方式不僅僅是增加一個#include線,使其工作?

回答

8

如果您.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

0

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

+0

這裏有一些魔術 - 預編譯頭文件。 – hoha 2011-03-17 19:08:03

0

在你的 「另一.H」,#include <a .h file>

闡述:

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

0

對不起,C中沒有辦法可以訪問一個結構的定義,在另一頭文件,而不包括該文件(通過一個#include)。 #include的說明如下。

因此,可以說包含項目結構定義的頭文件被稱爲「item.h」,並且頭文件包含「tPCB.h」中tPCB結構的定義。在tPCB.h的頂部,你應該把下面的語句:

#include "item.h" 

這應該給於item.h.所有定義的tPCB.h文件訪問

1

永遠不要把變量定義(即,分配他們)在頭文件。這對許多不同的原因是不利的,其中兩個主要原因是程序設計不佳和鏈接器錯誤氾濫。

如果您需要在全球範圍內暴露的變量(沒有很多情況下,你真正需要做的),然後把它聲明爲在H-文件extern並在相應的C文件分配它。