我有一个包含许多头文件的OpenGL项目。我使用GLEW lib,我的Main.cpp
就像这样开始:
// use GLEW as static lib requires GLEW_STATIC
#define GLEW_STATIC
#include <GL/glew.h>
// ...
报告错误:
GL/glew.h(85): fatal error C1189: #error: gl.h included before glew.h
所以我需要在包含GL/glew.h
的任何其他标头之前加入gl.h
。所以我在每个标题中添加这些行:
#ifndef GLEW_INCLUDED
#define GLEW_STATIC
#include <GL/glew.h>
#define GLEW_INCLUDED
#endif
我必须修改每个标题,看起来像是&#34;脏&#34;工作。有没有干净的方法来做到这一点?
答案 0 :(得分:2)
干净的方法是进行自我控制。或者更重要的是,停止包括gl.h
。如果您使用的是OpenGL loading library,那么它会控制您对OpenGL的访问权限。让它完成它的工作,只包括它的标题。
所以不需要GLEW_INCLUDED
。
对于GLEW_STATIC
,这是您在命令行上添加到构建系统的定义,而不是您使用的每个文件。就像你没有定义NDEBUG
或其他类似的定义一样。