我试图将以下概念添加到我的C代码中(CMAKE_*
定义彼此独立):
#define DEF N
#ifdef CMAKE_X
redefine DEF (DEF + CMAKE_X)
#endif
#ifdef CMAKE_Y
redefine DEF (DEF + CMAKE_Y)
#endif
#ifdef CMAKE_Z
redefine DEF (DEF + CMAKE_Z)
#endif
...
我正在寻找比一大堆复杂的嵌套ifdef-s语句更好的方法。还有其他选择吗?
答案 0 :(得分:0)
看来你正在寻找这样的东西:
#define DEF_0 N
#ifdef CMAKE_X
#define DEF_X (DEF_0 + CMAKE_X)
#else
#define DEF_X DEF_0
#endif
#ifdef CMAKE_Y
#define DEF_Y (DEF_X + CMAKE_Y)
#else
#define DEF_Y DEF_X
#endif
#ifdef CMAKE_Z
redefine DEF_Z (DEF_Y + CMAKE_Z)
#else
#define DEF_Z DEF_Y
#endif
#define DEF DEF_Z
即。建立中间宏,每个宏可能会或可能不会添加到前一个宏。