gcc和g ++之间的-Wconversion之间的区别

use*_*768 6 c c++ gcc g++

可能重复:
我可以让GCC在向函数传递过多类型时发出警告吗?

考虑以下测试程序:

static void func(int a)
{
}

int main()
{
    unsigned int b = 42;

    func(b);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用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++代码时得到相同的警告?

Rob*_*edy 4

文档-Wconversion

默认情况下,C++ 中会禁用有关有符号整数和无符号整数之间转换的警告,除非显式启用 -Wsign-conversion。

看来您还需要足够新的 GCC 版本。我的版本是 4.0.1,它无法识别-Wsign-conversion.