【发布时间】:2019-10-02 04:28:42
【问题描述】:
我想要一个可以转换它的 C 预处理器宏:
if (IN(node->type, BRANCH, CAPTURE_START, CAPTURE_END)) {
...
}
到这里:
if (node->type == BRANCH || node->type == CAPTURE_START || node->type == CAPTURE_END) {
...
}
这有点类似于 MySQL IN 运算符。有可能吗?
【问题讨论】:
-
您是否只是在寻找简单的宏替换来检查给定值是否是这些选项中的任何一个?如果是这样,您可以只做
#define IN(val, opt1, opt2, opt3) (val == opt1 || val == opt2 || val ==opt3) -
我想要那个,但有任意数量的选项。
-
不具有任意。即使是计算宏参数,您也需要为每个参数计数编写一个或两个宏...
标签: c c-preprocessor