標頭檔案的相互包含在編譯時如果順序不注意就很容易造成編譯錯誤。
遇到乙個標頭檔案,一開始並沒有包含其他標頭檔案而是定義了一些列舉,然後再包含另外乙個標頭檔案,這樣就很類似於:
// 1 //
// 1 //
// 2 //
// 1 //
// 1 //在1標頭檔案中包含2標頭檔案,預處理時就是以這樣的形式處理交給編譯器,原本的用意是在1標頭檔案的包含2之前的部分定義了一些2標頭檔案需要使用的東西,方便2使用,這種結構就對預處理有一定要求了,需要把1放在前面,如果include的時候是先include2則有部分東西並沒定義就會報錯,這樣就限制了2標頭檔案,他不能單獨使用,必須只能通過使用1標頭檔案來包含2。
若在某個c檔案中先包含了2再包含1,顯然就會報錯。
還存在乙個問題,就是在2標頭檔案中再包含1,因為編譯1的開關已經關閉,所以包含了也沒有用。
c 標頭檔案相互包含問題
c 中標頭檔案互相包含經常會出現編譯錯誤.示例 如下 h ifndef a h define a h include b.h includeusing namespace std class a endif a h a.cpp include a.h a a a a int a getvala vo...
C標頭檔案相互包含的問題
在c 中,關於cpp的標頭檔案互相包含的問題很讓人頭疼,其實我們誰也不願意弄的結構混亂,難以理解,但有時又是有必須的。假定當前有兩個標頭檔案分別為 a.h 和 b.h,內容分別如下 a.h內容為 ifndef a h define a h endif include b.h class a publ...
解決標頭檔案相互包含問題的方法
所謂超前引用是指乙個型別在定義之前就被用來定義變數和宣告函式。一般情況下,c c 要求所有的型別必須在使用前被定義,但是在一些特殊情況下,這種要求無法滿足,例如,在類cmyview中保留了乙個非模式對話方塊物件指標,該物件用於顯示 修改一些資訊。為了實現對話方塊 應用 按鈕,把對話方塊做的修改立刻更...