簡體   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