我正在为Sega Dreamcast和Windows开发游戏引擎。我已经为Dreamcast硬件实现了自己的库,这与OpenGL for PC几乎完全相同。现在,我想将两个构建合并到一个项目中,因此我不需要开发不同的项目来完成相同的高级项目。
我知道你可以添加这样的预处理行:#define DREAMCAST,然后将包含Dreamcast标题,并调用相应的低级函数而不是OpenGL。这是以前做过的,但我不知道如何做到这一点。
这与Dreamcast无关,可能是Mac,Linux等等。我为每个平台都有不同的编译器。所以当#define DREAMCAST时,我希望G ++ KOS编译器包含Dreamcast特定的头文件和类。如果#define DREAMCAST不存在,我希望MingGW包含Windows OpenGL头文件和类。
我该怎么做?
答案 0 :(得分:1)
对于根据预定义符号包含不同版本的初始问题,可以使用简单的解决方案:
#if defined(DREAMCAST)
#include <my_dreamcast_header>
#else
#include <opengl_header>
#endif
这个功能几乎可以在任何C或C ++编译器上使用 - 它肯定在MinGW上。当然,您仍需要自己调用正确的编译器,因为编译开始后无法更改编译器。