gcc和g++的-Wconversion有什么不同?

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

1个回答

4

来自文档的说明:-Wconversion

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

看起来您也需要一个足够新的GCC版本。我有4.0.1版本,它不识别 -Wsign-conversion


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接