在.h文件中,我聲明瞭一個全局變量爲:多,包括.h文件
#pragma data_seg(".shared")
#ifndef DEF_VARX
#define DEF_VARX
int VARX=0;
#endif /*DEF_VARX*/
#pragma data_seg()
#pragma comment(linker, "/SECTION:.shared,RWS")
但是如果我包括多個cpp文件這個文件,當我嘗試編譯,我得到「錯誤LNK2005:「int VARX」(?VARX @@ 3HA)已在Dll.obj中定義「錯誤。如果我只包含一個cpp文件,則不會遇到任何問題。
是不是#IFNDEF ....檢查足以防止這種情況?我想念什麼?
這是不夠的,以防止這種情況。當你包括一些東西的時候,就像將該文件的全部內容複製到你的文件中一樣。當你將它複製到每個cpp文件中時,你都告訴它們每個都包含「int VARX = 0;」因爲DEF_VARX不會在每個文件中首次定義。所以他們每個人都會包含一個VARX的定義。 #ifndefs防止int VARX;從同一個文件中被定義兩次。 – pbos 2009-11-02 20:49:48