我有一個預處理器宏,它根據宏參數生成函數和變量。預處理器:使用動態名稱生成函數。多重定義問題
調用帶有宏觀sequently,B由於宏頭文件中定義的宏將產生類似
Inst* AActivate() { ... }
bool Atemp;
Inst* BActivate() { ... }
bool Btemp;
,我得到的鏈接錯誤通知我關於已定義的符號。 我使用#pragma一次,但我想問題在於實現標題內的功能。
這裏的宏:
#define REGISTER(ns, id, type) \
Inst* type##Activate() { return new type(); }\
bool type##temp = RegisterType(ns << 8 | id, &type##Activate);
現在我不知道如何處理這樣的問題。 我的第一個想法是使用一些#defense-Guards,但顯然這需要嵌套的#defines,這在C++中是不可能的。 我讀了關於一個可能的解決方案,但很不幸,我無法使用這些庫。
有什麼想法?
預先感謝您...
謝謝你,我已經嘗試中的#define宏中定義的*激活,內聯函數,但令人驚訝的多重定義錯誤仍然出現......這是連接到我 – mbue
啊,沒關係,愚蠢的我...我在VS編譯錯誤的項目文件。使用內聯它當然是有效的。謝謝 – mbue