6

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

考虑以下测试程序:

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:在函数âmainâ中:
testit.c:11:警告:由于原型而将 âfuncâ 的参数 1 传递为已签名
大声笑@mac:~/projects$

但是,在 g++ 中没有警告!:

lol@mac:~/projects$ g++ -Wconversion testit.c
大声笑@mac:~/projects$

这是什么原因,在编译 C++ 代码时有没有办法得到同样的警告?

4

1 回答 1

4

文档-Wconversion

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

似乎您也需要一个足够新的 GCC 版本。我有 4.0.1 版,但它无法识别-Wsign-conversion.

于 2009-02-03T03:33:36.763 回答