【发布时间】:2022-10-21 20:57:57
【问题描述】:
我有以下问题
让我们假设有一个库有两个版本
版本 1 已经声明了这样的枚举
enum colors {
RED,
GREEN,
BLUE
}
版本 2 看起来像这样
enum colors {
RED,
GREEN,
BLUE,
TURQUOISE
}
我想做的是使用预处理器执行编译时检查,以确定我可以使用哪个枚举值,这看起来像这样
#include <colors_library.h>
int main()
{
#if TURQUOISE
some_function(TURQUOISE);
#else
some_function(BLUE);
#endif
}
但到目前为止,我没有成功使它与 #if 和 #ifdef 指令一起使用
【问题讨论】:
-
您要求预处理器检查它不知道的信息。即使在以后的翻译步骤中也不确定是否有办法。
-
不幸的是,C++ 不能以这种方式工作。预处理过程发生在以任何方式解释 C++ 代码之前。该文件可以包含所有哈利波特小说的组合内容,而不是 C++ 代码,预处理器不会在意。
标签: c++ enums c-preprocessor preprocessor