2013-04-21 72 views
0

我正在用C++編寫一個多文件程序(School project)。昨天我遇到了一個很奇怪的問題。當我在程序中包含一個特定的頭文件時,它拒絕編譯。它給了我錯誤「missing; before *」,這表明我的一些類在其他頭文件中聲明的類變得未聲明或類似的東西。我包含的頭文件包括頭文件也包括我包含的頭文件。另一方面,我正在使用#if!defined(FILENAME_H)來避免重複包含。還值得一提的是它只是一個特定的頭文件導致了我的問題,並且定義的/未定義的/ endif代碼沒有任何問題。頭文件問題

+1

這[Q&A]後結束}分號(HTTP:/ /stackoverflow.com/questions/14909997/why-arent-my-include-guards-preventing-recursive-inclusion-and-multiple-symbol)(特別是第一個問題/答案)應該可以幫助你 – 2013-04-21 09:37:33

+0

那麼問題是什麼? – juanchopanza 2013-04-21 09:37:38

+0

@AndyProwl我相信這回答我的問題,謝謝:D – Martin 2013-04-21 10:06:09

回答

0

看起來你有問題的標題是這樣的:

class A 
{ 

} 

沒有;類聲明之後。一旦你包含這個頭文件,它會在稍後導致錯誤。

+0

我已經在其他地方包含頭文件,並且該類有一個;在結束括號後。 – Martin 2013-04-21 09:43:00

+0

@Martin你可以提供問題標題嗎? – alexrider 2013-04-21 09:44:34

+0

@Martin:你的問題最有可能與相互包容。請看看[這個Q&A](http://stackoverflow.com/questions/14909997/why-arent-my-include-guards-preventing-recursive-inclusion-and-multiple-symbol),我鏈接在對你的問題的評論 – 2013-04-21 10:03:24

0

多德每頭文件應與

#ifndef NAMEOFFILE_H 
#define NAMEOFFILE_H 

and end with 

#endif 

這確保了一個頭文件不包含在你的程序不止一次開始。

此外,如果你的類是未申報的我敢肯定你一定錯過

在大括號的類確定指標

+0

OP提到包括守衛在那裏。編譯器錯誤是誤導性的,通常是由於包含相互頭文件而產生的。這一切都解釋[這裏](http://stackoverflow.com/questions/14909997/why-arent-my-include-guards-preventing-recursive-inclusion-and-multiple-symbol) – 2013-04-21 10:04:05