使用g++
编译时,此代码不会给我任何警告:
unsigned int myFunc(unsigned int integer) {
return integer;
}
int main() {
int x = -1;
std::cout << myFunc(x) << std::endl;
}
它编译得很好,但结果是错误的:4294967295
。 GCC是否有任何编译器-W*
选项?
答案 0 :(得分:5)
是的,-Wsign-conversion
请注意-Wconversion
没有为C ++代码启用此警告,尽管它适用于C代码。
答案 1 :(得分:4)
我应该概述一个小小的警告,因为它可能有点棘手且容易混淆。
编译C
代码-Wconversion
通常就足够了,因为它会自动触发其他一些标记。
编译C++
代码-Wconversion
时,gcc
触发与C
完全相同的标记,因此您应该使用-Wsign-conversion -Wconversion
< / p>