从 C 中的 assert.h 文件:
#define assert(expr) (__ASSERT_VOID_CAST (0))
我想知道什么是 (__ASSERT_VOID_CAST (0))?我试图找到它的实现,但找不到任何地方。
最佳答案
好吧,__ASSERT_VOID_CAST
将是某个地方的另一个宏,当断言被“关闭”时,它将扩展为与
((void) 0)
这是一种获得
void
表达式的方法。在较旧的实现中 assert()
只是扩展为一个空字符串,但 void-expression 将允许您使用逗号运算符将其扭曲为一个表达式,例如:while(assert(n > 0), k/n > 10) { ... }
关于c - 什么是 (__ASSERT_VOID_CAST (0))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695847/