C++ Directive With void(0)
C++ Directive With void(0)
拥有类似下面的指令的目的是什么?
#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
使使用非voidANOTHER_DIRECTIVE(...)
。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 在派生函数中指定void*参数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 我应该使用什么来代替void作为变体中的替代类型之一
- 奇怪的结构&GCC&clang(void*返回类型)
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 引用一个已擦除类型(void*)的指针
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 如何将指针从一个void函数传递到另一个C++
- 为什么我在使用void函数时得到错误代码C2276
- void*到驱动程序中的UnicodeString
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- 指针没有更新它在void函数内部指向的值
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- C++ Directive With void(0)