添加预处理器 #define 以更改包含哪些 headers 以及调用哪些函数
Adding a preprocessor #define to change which headers are included and which functions are called
我正在为 Sega Dreamcast 和 Windows 开发游戏引擎。我已经为 Dreamcast 硬件实现了我自己的库,它几乎与 PC 的 OpenGL 做同样的事情。现在,我想将两个构建合并到一个项目中,这样我就不需要开发到不同的项目来做完全相同的高级工作。
我知道您可以像这样添加预处理行:#define DREAMCAST,然后 Dreamcast headers 将被包括在内,并且将调用适当的低级函数而不是 OpenGL。这已经完成了,但我不知道如何使之成为可能。
这真的与 Dreamcast 无关,它可能是 Mac、Linux 或其他什么。每个平台我都有不同的编译器。所以当#define DREAMCAST 时,我希望 G++ KOS 编译器包含 Dreamcast-specific headers 和 类。如果不存在#define DREAMCAST,我希望 MingGW 包含 Windows OpenGL headers 和 类.
我该怎么做?
对于根据预定义符号包含不同版本的初始问题,有一个简单的解决方案:
#if defined(DREAMCAST)
#include <my_dreamcast_header>
#else
#include <opengl_header>
#endif
几乎任何 C 或 C++ 编译器都应该提供此功能 - MinGW 上肯定有。当然,您仍然需要自己调用正确的编译器,因为一旦编译开始就无法更改编译器。
我正在为 Sega Dreamcast 和 Windows 开发游戏引擎。我已经为 Dreamcast 硬件实现了我自己的库,它几乎与 PC 的 OpenGL 做同样的事情。现在,我想将两个构建合并到一个项目中,这样我就不需要开发到不同的项目来做完全相同的高级工作。
我知道您可以像这样添加预处理行:#define DREAMCAST,然后 Dreamcast headers 将被包括在内,并且将调用适当的低级函数而不是 OpenGL。这已经完成了,但我不知道如何使之成为可能。
这真的与 Dreamcast 无关,它可能是 Mac、Linux 或其他什么。每个平台我都有不同的编译器。所以当#define DREAMCAST 时,我希望 G++ KOS 编译器包含 Dreamcast-specific headers 和 类。如果不存在#define DREAMCAST,我希望 MingGW 包含 Windows OpenGL headers 和 类.
我该怎么做?
对于根据预定义符号包含不同版本的初始问题,有一个简单的解决方案:
#if defined(DREAMCAST)
#include <my_dreamcast_header>
#else
#include <opengl_header>
#endif
几乎任何 C 或 C++ 编译器都应该提供此功能 - MinGW 上肯定有。当然,您仍然需要自己调用正确的编译器,因为一旦编译开始就无法更改编译器。