我想根据枚举值选择一部分代码进行编译。那么,如何结合使用 enum 和预处理器指令来实现这个目标呢?一个例子如下:
#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”。有没有办法使用枚举来控制编译段?谢谢你。