以下"assert_disabled()"宏如何工作?

gja*_*ain 4 c assert sizeof

我看到这个宏出现在代码库的许多地方,以查找特定字段是否被禁用(0或1).

#define assert_disabled(e)      ((void)sizeof(e))
Run Code Online (Sandbox Code Playgroud)

如何sizeof帮助查找字段是0还是1?

有人可以用一个有效的例子来解释这个吗

R..*_*R.. 8

我很确定这个宏只是在关闭断言时使用.使用((void)sizeof(e))而不仅仅是(void)0或类似的技巧是聪明的:它避免评估e(大多数),但仍然有编译器检查e是一个有效的表达式,所以当你更改定义以打开断言时,你不会得到意外的编译错误.