寻找嵌套#ifdef-s集的替代方案

时间:2018-05-29 08:34:26

标签: c c-preprocessor

我试图将以下概念添加到我的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语句更好的方法。还有其他选择吗?

1 个答案:

答案 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

即。建立中间宏,每个宏可能会或可能不会添加到前一个宏。