我試圖在C.在「鑽石繼承」結構中是否可以#include?
一些項目,我想知道是否有可能使#include
從同一個文件,在回憶鑽石遺產的方式。
即
在 交流轉換器- 有
#include "a.h"
在b.c - 有
#include "b.h"
在 - b.h有
#include "a.h"
是否有可能#include "b.h"
in a.c?
我得到一個錯誤:
some_variable already defined in a.obj
我試圖在C.在「鑽石繼承」結構中是否可以#include?
一些項目,我想知道是否有可能使#include
從同一個文件,在回憶鑽石遺產的方式。
即
在 交流轉換器#include "a.h"
在b.c#include "b.h"
在#include "a.h"
是否有可能#include "b.h"
in a.c?
我得到一個錯誤:
some_variable already defined in a.obj
簡單:不定義頁眉變量,只是聲明他們:
頁眉:
// a.h
#ifndef A_H // always use #include guards
#define A_H
extern int my_variable; // declare my_variable
...
#endif
源文件交流:
// a.c
#include "a.h"
int my_variable; // define my_variable
...
源文件b.c:
// a.c
#include "a.h"
#include "b.h"
...
正如其他人所說,#包括守衛是有用的,和良好的習慣進入,但他們很可能不是這個具體問題的解決方案。
我已經使用「#包括衛兵」,它沒有幫助,我會嘗試你的解決方案 – hudac
你有啊聲明extern
變量,然後修改你的頭啊以下列方式:
#ifndef a_h
#define a_h
//your a.h
#endif
我已經使用「#包括衛兵」,它沒有幫助 – hudac
尋找「包括衛士」 – cnicutar
簡單:不*定義*變量在標題中,只需*聲明*它們。 –
@PaulR你如何在頭文件中聲明'int'而不定義它? – SomeWittyUsername