前几天看到一个宏, 它大概是这样的: #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__)) 代码的含意简单, 关键是那个 (void)0 的用法, 我还是第一次见到(别笑). 我用 void 的时候, 有两种情况: 1.放到函数前面, 强调函数没有返回值, 也就是说函数不能作右值 如: void fun(int x); 2.放到函数形参里面, 强调函数无任何参数 如: int…