2011-03-26 90 views
0

我有test.h文件和example.h文件,我想包括在其他每個 我嘗試了以下,但沒有奏效。包括文件問題

在文件test.h:

#ifndef "example.h" 

#define "example.h"` 

... 

#endif 

而且在文件example.h文件:

#include "test.h" 

後來又嘗試過:

#ifndef "test.h" 

#define "test.h" 

... 

#endif 

但毫無效果。

+1

「它沒有工作」 - 嗯,我想沒有什麼工作要做。除非你能告訴我們什麼不行,你嘗試過什麼,你得到的具體消息等。 – Joe 2011-03-26 19:53:08

+0

卡蒂亞。定義你的意思是「不起作用」。像這樣的循環依賴通常是一個設計錯誤。您可能想要顯示文件的內容,我們可以提出一些建議。 – 2011-03-26 19:54:59

+0

@Joe我得到這個錯誤「致命錯誤C1016:#if [n] def期望標識符」 – Katia 2011-03-26 20:18:38

回答

3

你需要拿出一些獨特的標識符每個包括警衛。例如:

#ifndef EXAMPLE_H 
#define EXAMPLE_H 
... 
#endif 

你不能只使用具有的#ifndef等

+0

嘗試它,它停止給予我關於包含部分的錯誤..非常感謝 – Katia 2011-03-26 20:24:32

+1

您可能會發現兩個同名的包含文件。 (例如,一個可能在庫中,所以你不知道它)爲了避免有兩個文件帶有「'#define EXAMPLE_H'」,我有時使用一個唯一的標識符,比如一個GUID。例如「'#define EXAMPLE_H_B09BD769_5844_11E0_A3B6_6CF0494804C2'」 – 2011-03-27 07:36:38

0

也許你應該寫象下面這樣:

在文件test.h:

#ifndef __TEST_H__ 
#define __TEST_H__ 
#include "example.h" 
#endif// __TEST_H__ 

在文件example.h文件:

#ifndef __EXAMPLE_H__ 
#define __EXAMPLE_H__ 
#include "test.h" 
#endif//__EXAMPLE_H__ 
+0

在兩個下劃線前綴'#define's是不好的做法。如果你真的需要使它獨特的東西,使用文件的完整路徑,日期和時間,隨機生成的字符串等 – Maxpm 2011-03-26 20:07:25

+0

仍然給錯誤,但感謝幫助無論如何:) – Katia 2011-03-26 20:22:35

0

您不能在文件名。這種方式去循環包括地獄。通過定義結構解決您的問題,您使用

example.h文件

class bar; 

    class foo 
    { 
     bar* barPtr; 
    } 

test.h

class foo; 

class bar 
{ 
    foo* fooPtr; 
} 
+0

這就是我們正在做的事情..我做了一個類.h和.cpp和其他隊友做了另一個。現在我的功能需要使用其他類的對象,反之亦然..那是什麼導致了圓圈在第一個地方 – Katia 2011-03-26 20:09:31

+0

你的問題不會由#ifdef的解決。嘗試在第三個標題中移動常見結構,並將其包含在兩個項目中,或應用上述解決方案。 – cprogrammer 2011-03-26 20:20:37