如何使用枚举值直接编译预处理器指令
How to use enum values to direct compilation with preprocessor directives
我想根据枚举值选择一部分代码进行编译。那么,我如何结合使用枚举与预处理器指令来实现这一目标?示例如下:
#include <iostream>
enum CODE {BINARY, PERMUTATION, BYVALUE};
#define ENCODING(x) (x)
using namespace std;
int main()
{
CODE code = PERMUTATION;
#if ENCODING(code) == BINARY
cout << "code: BINARY" << endl;
#elif ENCODING(code) == PERMUTATION
cout << "code: PERMUTATION" << endl;
#elif ENCODING(code) == BYVALUE
cout << "code: BYVALUE" << endl;
#endif
return 0;
}
显然,这是不正确的得到我的目标,因为它总是采取第一个#if语句,并显示"code: BINARY"。是否有任何方法使用枚举来控制编译段?谢谢你。
您正在尝试使用运行时变量值控制编译(预处理)过程。这是不可能的。
您应该选择在预处理阶段编译的代码部分(使用#define
),或者您可以编写switch
语句,该语句将选择所需的编码(如果code
是恒定的,那么优化编译器将有效地消除switch
)。
相关文章:
- 错误:无效的预处理指令 #i 的意思是 #if?
- C++预处理会生成变量成员、资源库和映射
- 使用预处理指令检查是否包含标头?
- 预处理的 C/C++ 文件是否特定于计算机?
- 使用 GCC 对 C 文件进行部分预处理(不删除 "define" 指令)
- 在 CPLEX 中求解线性规划,无需剪切和预处理
- CPP -D 选项,用于预处理 Fortran 代码
- 错误:粘贴"tmp_UINT"和"+"未提供有效的预处理令牌
- 任务计划程序库的预处理不起作用 - 多定义错误
- Eclipse 问题 - 编译期间不考虑 .c 和 .cpp 文件中定义的预处理
- 使用python预处理后,C++(opencv)中的垫子类型数据与image_to_array相同
- Howo 使用 cl 预处理为 masm 组装生成一个单独的文件
- 我有一个预处理的 C/C++ 源文件 (cacti.i).如何从这个 .i 文件生成可执行二进制文件,以便我可以像 ./
- 预处理之后和使用CMake编译之前的自定义构建步骤
- 有没有办法使用 clang 有效地编译已经预处理过的文件
- 如何在linux下编译c/cpp代码,给出经过预处理的汇编文件和编译后的目标文件
- 编译先前预处理的文件会更改输出
- visual msvsc++,如何用*编译已经预处理过的文件.我扩展
- 在编译时在c/c++预处理宏中验证参数为ARRAY类型
- 预处理/预编译-用常量替换变量