繁体   English   中英

具有void(0)的C ++指令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM