C++ Directive With void(0)

C++ Directive With void(0)

本文关键字:void Directive With C++      更新时间:2023-10-16

拥有类似下面的指令的目的是什么?

#define TEST_CONDITION(con) !(con) ? (void)0:

特别是,我在其他指令的开头中看到了这一点。

例如,

#define OTHER_CONDITION(..)
  TEST_CONDITION(someFunction)
  ANOTHER_DIRECTIVE(...)

TEST_CONDITION不只是返回在这些情况下不使用的no-op或boolean?

展开宏,它变得更加清晰。我还将使用一些格式来保持代码可读,我认为缺乏某些必需的逃生字符并不是要成为示例的一部分。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使使用非void ANOTHER_DIRECTIVE(...)