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

#define assert_disabled(e)      ((void)sizeof(e))

sizeof在这里如何帮助查找字段是0还是1?
有人能用一个有效的例子来解释吗?

最佳答案

我很确定这个宏只是在断言被关闭时使用的。使用((void)sizeof(e))而不是仅使用(void)0或类似的方法是聪明的:它避免了计算e(大多数情况下),但仍然有编译器检查e是否是有效的表达式,因此当您更改定义以启用断言时不会出现意外的编译错误。

09-30 15:06
查看更多