当我添加编译器选项-Wparentheses
时,我收到警告
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
代码
int x;
if (x = 0)
{
}
if
语句中的条件错误地是赋值而不是比较。
现在我想使用这个宏将条件传递给函数:
#define check(condition,message) DoCheck(condition, message)
在该函数condition!=0
中执行DoCheck
的实际检查。当我使用这个宏时,我想得到错误分配的相同警告:
check(x = 0, "bla");
如何告诉GCC必须将第一个参数视为与if
语句的条件类似?
编辑:编码样式的更改会导致无意分配错误:0 == x
。这甚至不需要任何额外的手段。但我也想抓住其他错误。