【发布时间】:2017-11-03 09:42:01
【问题描述】:
我正在一个使用 OpenGL 的多平台项目中工作,并达到了我需要查询当前上下文的地步。 在 Windows 中,我使用了 wglGetCurrentContext(),包括 windows.h,效果很好。
另一方面,当我尝试在 linux 中编译时,我使用的是 glXGetCurrentContext() 并包括 glx.h,它内部包含 Xlib.h 和 X.h
碰巧在我的源代码中有一个名为 Status 的类,但在 Xlib 中有一个名为相同的宏,即 #define Status int,啊哈!现在是个大问题,因为我到处都在使用我的课程。
解决这个问题的最佳方法是什么?我现在的想法是
- 将我的课程重命名为其他名称...但是为什么呢?
- 使用
#pragma push_macro("Status"),后跟#undef Status - 找到一种更强大、更便携的方式来查询 OpenGL 的上下文
如果您有任何其他建议,请告诉我,我非常感谢。
【问题讨论】:
-
限制包含 glx.h 的文件数量,然后取消定义宏。不要包含在标题中!
-
你能把依赖移到一个唯一的文件中吗?在哪里可以安全地
#undef Status?