可能重复:
Can I make GCC warn on passing too-wide types to functions?
考虑以下测试程序:
static void func(int a)
{
}
int main()
{
unsigned int b = 42;
func(b);
return 0;
}
使用gcc:
进行编译lol@mac:~/projects$ gcc -Wconversion testit.c testit.c: In function âmainâ: testit.c:11: warning: passing argument 1 of âfuncâ as signed due to prototype lol@mac:~/projects$
但是,在g ++中没有警告!:
lol@mac:~/projects$ g++ -Wconversion testit.c lol@mac:~/projects$
这是什么原因,有没有办法在编译C ++代码时得到相同的警告?
答案 0 :(得分:4)
来自-Wconversion
的{{1}}:
除非明确启用-Wsign-conversion,否则默认情况下在C ++中禁用有关有符号和无符号整数之间转换的警告。
似乎你也需要一个足够新版本的GCC。我有4.0.1版本,它无法识别-Wsign-conversion
。
答案 1 :(得分:2)