很難想出這個問題的正確標題。無論如何...其他的庫#define命名衝突
我目前正在爲在我的遊戲SDL工作。我完成了軟件繪圖,並且正在開始OpenGL的一部分,當出現一個奇怪的錯誤時。我包含了「SDL/SDL_opengl.h」頭文件並進行了編譯。它會拋出「錯誤C2039:'DrawTextW':不是'GameLib :: FontHandler'的成員,這是一個足夠簡單的錯誤,但我沒有任何名爲DrawTextW的東西,只有FontHandler :: DrawText。我搜索DrawTextW並在頭文件「WinUser.h」的#define調用中找到它!
//WinUser.h
#define DrawText DrawTextW
顯然,它取代了我和DrawTextW DrawText的!我怎樣才能阻止它溢出到我的代碼呢?
改變我自己的函數的名字是一件小事,但這樣的命名衝突看起來非常危險,我真的很想知道如何避免它們在一起。
乾杯!
謝謝!它現在編譯好了。確實有一個令人討厭的副作用。看起來好像SDL_opengl.h包含了windows.h,但是#undef是它的工作。爲了避免這個問題,windows.h的寫法可能不同嗎? – Zoomulator 2009-07-03 20:06:10
它可以。但這需要微軟關心。 – jalf 2009-07-03 20:22:40