對於C語言重複包含 重複定義的解決(gcc)

2021-09-16 19:58:39 字數 789 閱讀 5579

使用條件編譯指令

例如:

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