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

使用條件編譯指令

例如:

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"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章