当我向只接受无符号整数的函数提供有符号整数时,是否有一种方法可以使GCC警告我?

Is there a way to make GCC alert me when I provide a signed integer to function that accepts only unsigned one?

本文关键字:一种 方法 警告 GCC 可以使 是否 无符号整数 函数 整数 符号 提供有      更新时间:2023-10-16

这段代码在使用g++编译时没有任何警告:

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

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

是,-Wsign-conversion

请注意,-Wconversion不会对c++代码启用此警告,尽管它可以对C代码启用此警告。

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

当编译C代码时,-Wconversion通常是足够的,因为它会自动触发几个其他标志。

当编译C++代码时,-Wconversion不会触发与Cgcc完全相同的标志,因此您应该使用-Wsign-conversion -Wconversion

链接到文档

相关文章: