很难想出这个问题的正确标题。无论如何...其他的库#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