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