当使用 中的隐式转换时,有什么方法可以发出警告gcc
或g++
发出警告?if
if(25.0)
这个问题的灵感来自我最近观察到的一个错误,其中括号放错了位置,并且该if
语句具有以下示例中所示的意外行为。我从关于逗号运算符的讨论中了解到,这是有效的(虽然丑陋的)代码,但我想得到一个警告。我试过-Wconversion -Wall -pedantic
有没有运气g++ (GCC) 4.1.2
。g++ (GCC) 4.6.3
#include <cstdio>
bool passMin(float val, float minval=10.) {return minval<val;}
int main () {
float val(20.0), minval(25.0);
if(passMin(val), minval) printf(" pass (p( ), )"); else printf(" fail (p( ), )");
printf("\n");
if(passMin(val, minval)) printf(" pass (p( , ))"); else printf(" fail (p( , ))");
printf("\n");
}
这会产生:
pass (p( ), )
fail (p( , ))