[英]C++ Directive With void(0)
拥有如下所示的指令的目的是什么?
#define TEST_CONDITION(con) !(con) ? (void)0:
特别是,我看到这在其他指令的开头被调用。
例如,
#define OTHER_CONDITION(..)
TEST_CONDITION(someFunction)
ANOTHER_DIRECTIVE(...)
TEST_CONDITION
是否只返回no-op或在这些情况下不使用的布尔值?
展开宏,它将变得更加清晰。 我还将使用某种格式来保持代码的可读性,并且我认为缺少一些必要的转义符并不意味着要成为示例的一部分。 OTHER_CONDITION
变为:
!(someFunction)
? (void)0
: ANOTHER_DIRECTIVE(...)
因此,执行了someFunction
表达式,如果该表达式为true
,则执行ANOTHER_DIRECTIVE(...)
(或扩展为它的任何值)。 否则不执行任何操作。
编写OTHER_CONDITION
更简单方法是:
#define OTHER_CONDITION(..) if(someFunction) ANOTHER_DIRECTIVE(...)
这种简化没有TEST_CONDITION
提供的一些限制:
TEST_CONDITION
使得无法追加else
分支。 TEST_CONDITION
使得使用非无效的ANOTHER_DIRECTIVE(...)
不ANOTHER_DIRECTIVE(...)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.