当我提供一个只接受无符号的函数的有符号整数时,有没有办法让GCC提醒我?

时间:2014-06-05 18:28:36

标签: c++ gcc compiler-errors unsigned-integer

使用g++编译时,此代码不会给我任何警告:

unsigned int myFunc(unsigned int integer) {
  return integer;
}
int main() {
  int x = -1;
  std::cout << myFunc(x) << std::endl;
}

它编译得很好,但结果是错误的:4294967295。 GCC是否有任何编译器-W*选项?

2 个答案:

答案 0 :(得分:5)

是的,-Wsign-conversion

请注意-Wconversion没有为C ++代码启用此警告,尽管它适用于C代码。

答案 1 :(得分:4)

我应该概述一个小小的警告,因为它可能有点棘手且容易混淆。

编译C代码-Wconversion通常就足够了,因为它会自动触发其他一些标记。

编译C++代码-Wconversion时,gcc触发与C完全相同的标记,因此您应该使用-Wsign-conversion -Wconversion < / p>

Link to the docs