兩頭檔案相互包含,且內容相互引用問題

2021-08-15 17:42:42 字數 1080 閱讀 3978

#ifndef __head_1_h__

#define __head_1_h__//防止多次包含,重複定義#include "head2.h"

#define var_macro 1 //define a macro, which used in head2.h

bool func(classa* ca); //classa is defined in head2.h

#endif

#ifndef __head_2_h__

#define __head_2_h__//防止多次包含,重複定義#include "head1.h"

class classa; //macro var_macro is defined in head1.h

};#endif

將以上兩檔案分別展開有:

head1.h

class classa; //var_macro 未定義

... //other members and functions

};#define var_macro 1 //define a macro, which used in head2.h

bool func(classa* ca); //classa is defined in head2.h

head2.h

#define var_macro  1          //define a macro, which used in head2.h

bool func(classa* ca); //classa *ca未定義

class classa; //macro var_macro is defined in head1.h

... //other members and functions

};

若相互包含,則有可能出現 未定義的情況。

標頭檔案的相互包含

標頭檔案的相互包含在編譯時如果順序不注意就很容易造成編譯錯誤。遇到乙個標頭檔案,一開始並沒有包含其他標頭檔案而是定義了一些列舉,然後再包含另外乙個標頭檔案,這樣就很類似於 1 1 2 1 1 在1標頭檔案中包含2標頭檔案,預處理時就是以這樣的形式處理交給編譯器,原本的用意是在1標頭檔案的包含2之前的...

C 標頭檔案相互引用

常見錯誤用法 a.h ifndef header aaa define header aaa include b.h class a endif a.cpp include a.h a a void a a void b.h ifndef header bbb define header bbb i...

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...