如何按顺序包含标题?

时间:2015-12-25 03:18:10

标签: c++ opengl include glew

我有一个包含许多头文件的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;工作。有没有干净的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

干净的方法是进行自我控制。或者更重要的是,停止包括gl.h。如果您使用的是OpenGL loading library,那么它会控制您对OpenGL的访问权限。让它完成它的工作,只包括它的标题。

所以不需要GLEW_INCLUDED

对于GLEW_STATIC,这是您在命令行上添加到构建系统的定义,而不是您使用的每个文件。就像你没有定义NDEBUG或其他类似的定义一样。