如何按顺序包含header?

How to include header in order?

我有一个包含许多 header 文件的 OpenGL 项目。我使用 GLEW 库,我的 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.h 的任何其他 header 之前包含 GL/glew.h。所以我在每个 header:

中添加这些行
#ifndef GLEW_INCLUDED
#define GLEW_STATIC
#include <GL/glew.h>
#define GLEW_INCLUDED
#endif

我必须修改每个 header,似乎是 "dirty" 的工作。有什么干净的方法可以做到这一点吗?

干净的方法是锻炼 self-control。或者更重要的是,停止包括 gl.h。如果您使用 OpenGL loading library,那么它会控制您对 OpenGL 的访问。让它完成它的工作,只包含它的 headers.

所以不需要GLEW_INCLUDED

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