使用條件編譯指令
例如:
a.h:
int fun();
b.h:
#include "a.h"
c.h:
#include "a.h"
main.c:
#include "b.h"
#include "c.h"
......
//編譯時就會出現重複包含/定義錯誤
可以加入條件編譯指令#ifndef #endif
a.h:
#ifndef a_fun
#define a_fun
int fun();
#endif
b.h:
#include "a.h"
c.h:
#include "a.h"
main.c:
#include "b.h"
#include "c.h"
......
//編譯時就會出現重複包含/定義錯誤
給出幾個建議:
可以將要包含的標頭檔案統一include到 .c/.cpp檔案中,這樣就會單獨解析,不會發生錯誤。
或者直接include在標頭檔案中,然後.c/.cpp檔案裡include自己的標頭檔案,但標頭檔案的函式要加上條件編譯指令。例如:
b.h:
#include "a.h"
#include "c.h"
b.c:
#include "b.h"
C語言中重複定義的問題
幾個基本知識 1 標頭檔案 標頭檔案的作用在於編譯時,會在 include h 位置處展開,所以如果有多個.c檔案include同乙個標頭檔案 很常見 如果標頭檔案編寫時不進行處理,出現重複定義是不可避免的。尤其是當乙個專案分成多個模組的時候。2 一般,把函式 變數 結構體 類等放在.c或者.cpp...
避免變數重複定義和重複包含標頭檔案的方法
重複包含的影響 在預處理對時候,include相同的檔案,預處理器會檢查 是否有定義再決定要不要複製內容,重複包含會是編譯器多檢查幾次而已。另外在使用增量編譯的時候,這個檔案變化,所有 include 這個檔案的檔案都需要重新編譯,即使沒有去使用裡面的任何內容。避免方法 1.把頭檔案放在巨集裡 if...
c語言中關於標頭檔案重複包含
1 如果標頭檔案a包含標頭檔案c,同時標頭檔案b也包含標頭檔案c,而寫的程式中包含了標頭檔案a,標頭檔案b,然後在編譯的時候就會出現標頭檔案c重複包含的錯誤 這個錯誤 只要在自己寫的標頭檔案中這樣寫 ifndef x x為你的識別符號,保持唯一,可以長點,比如 ifndef include h de...