根据预处理器条件生成宏
Macro generation depending on preprocessor conditionals
我有一个类似于下面的情况,我在一个表中有一个带有宏的条目:
#define FOR_MY_TYPES(apply)
apply(a, b, c)
apply(d, e, f)
....
我也有一些预处理条件:
#define CONDITION1 1
#define CONDITION2 0
我希望表中的一些条目根据这些条件添加,就像这样:
#define FOR_MY_TYPES(apply)
apply(a, b, c)
#if CONDITION1 || CONDITION2
apply(x, y, z)
#endif
实现这一目标的最佳方法是保持一个宏定义,并且,如果可能的话,避免根据条件重复条目。我想避免这个:
#if CONDITION1
#define FOR_MY_TYPES(apply)
....Full table here...
#endif
#if CONDITION2
#define FOR_MY_TYPES(apply)
//Full table again + CONDITION2 types
#endif
#if CONDITION1 || CONDITION2
#define FOR_MY_TYPES(apply)
//Full table again + CONDITION1 || CONDITION2 types
#endif
我的问题是有相当多的组合,所以我应该尽量避免重复。它也更容易出错。
一种可能的方法:
#if CONDITION1 || CONDITION2
#define really_apply(x) x
#else
#define really_apply(x)
#endif
#define FOR_MY_TYPES(apply)
apply(a, b, c)
really_apply(apply(x, y, z))
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- #定义c-预处理器常量..我做错了什么
- 预处理器:插入结构名称中的前一个行号
- 如何摆脱为条件编译定义预处理器宏的需要?
- 有没有办法在 c++ 中拥有条件预处理器
- 修复"-Wunused-parameter"取决于预处理器条件的警告
- 带有预处理器的可视化C++条件链接
- 如何使预处理器 #if 以另一个不同文件中的值为条件
- 预处理器和模板参数或代码段的条件编译
- VS2010 未正确处理预处理器条件下的"includes"
- 预处理器/条件变量定义
- 预处理器条件
- 将使用"if"的条件放在预处理器C++
- 条件预处理器相对于条件语句的优势
- c++预处理器条件参数
- 根据预处理器条件生成宏
- 处理器多久检查一次while循环条件
- while条件不工作时中的预处理器指令
- 重复代码块的预处理器指令(带条件)
- c++预处理器添加word if条件