C++ gcc和g+之间-Wconversion的差异+;

C++ gcc和g+之间-Wconversion的差异+;,c++,c,gcc,g++,C++,C,Gcc,G++,可能重复: 考虑以下测试程序: 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 âfun

可能重复:

考虑以下测试程序:

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$ lol@mac:~/projects$gcc-Wconversion testit.c testit.c:在函数–main–中: testit.c:11:警告:由于原型的原因,将–func–的参数1作为签名传递 lol@mac:~/项目$ 但是,在g++中没有警告!:

lol@mac:~/projects$ g++ -Wconversion testit.c lol@mac:~/projects$ lol@mac:~/projects$g++-Wconversion testit.c lol@mac:~/项目$ <什么原因?在编译C++代码时有什么方法可以得到同样的警告吗?< /P> < P>从<代码> -WTIFE> <代码>:

在C++中默认地禁用关于符号和无符号整数之间的转换的警告,除非明确启用了-WSCONE转换。 似乎您也需要一个足够新的GCC版本。我有4.0.1版,但它无法识别

-Wsign转换