Kil*_*zor 15 c++ macros visual-studio
在我的项目上工作了一段时间后,这个警告开始出现:
2>Game.cpp
2>c:\program files\microsoft sdks\windows\v6.0a\include\windef.h(126) : warning C4005: 'APIENTRY' : redefinición de macro
2> c:\users\ferran\directo\gameprojects\dev-libs\glfw\include\glfw.h(72) : vea la definición anterior de 'APIENTRY'
2>c:\program files\microsoft sdks\windows\v6.0a\include\wingdi.h(23) : warning C4005: 'WINGDIAPI' : redefinición de macro
2> c:\users\ferran\directo\gameprojects\dev-libs\glfw\include\glfw.h(88) : vea la definición anterior de 'WINGDIAPI'
Run Code Online (Sandbox Code Playgroud)
我确定这是要解决的包含文件的顺序问题,因为这些文件都不是我的.我的问题是,是否存在一种通用的方法来防止这种情况或找到必须重新排序的文件以避免此消息.
Mar*_*som 21
错误消息本身告诉您错误的订单.它说windef.h
并且wingdi.h
正在重新定义在中定义的符号glfw.h
.
放入glfw.h
Windows包含文件.
微软通常不设计标题是独立的.大多数面向Windows的标头要求您首先包含<windows.h>
.除了依赖于所有标题的母亲之外,通常没有特定的标题依赖关系,所以<windows.h>
首先包括你应该没有任何问题.
问题出在Game.cpp文件中.尝试在glfw.h之前包含windows.h.glfw.h中有一个警卫会阻止该警告:
#ifndef APIENTRY
#ifdef _WIN32
#define APIENTRY __stdcall
#else
#define APIENTRY
#endif
#define GL_APIENTRY_DEFINED
#endif // APIENTRY
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43934 次 |
最近记录: |