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

时间:2009-02-03 03:26:19

标签: c++ c gcc g++

  

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

2 个答案:

答案 0 :(得分:4)

来自-Wconversion的{​​{1}}:

  

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

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

答案 1 :(得分:2)