c - 什么是 (__ASSERT_VOID_CAST (0))?

标签 c macros

从 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/

相关文章:

c - 尝试制作链表,出现段错误

c - 在c中打印文本文件时出现未知字符

c - 参数类型对此链接类型的函数无效

c - 小数点后面的值 浮点值

unit-testing - 为磁盘上的文件对生成单元测试

c - 什么是强指针和弱指针

C++ 宏连接

c - 为什么这个宏不运行

C++ msgpack User-defined classes - 无法开始

r - 在 R 中引用参数