我想根据枚举值选择一部分代码进行编译。那么,我怎样才能将枚举的使用与预处理器指令结合起来来实现这个目标呢? 一个例子如下:
#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
)。
关于c++ - 如何使用枚举值通过预处理器指令直接编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16459195/