c++ - 如何让叮当警告非常简单的缩小

标签 c++ compiler-warnings clang++ narrowing

如果我正在使用 clang 工具,那么推荐的方法是获取 clang 或 clang 工具链的某些部分来告诉我,例如将 int 传递给采用 short 的函数可能是个坏主意?
鉴于这个非常简单的程序

static short sus = 0;
void foo(short us) {
  sus = us;
}

int main() {
  int i = 500000;
  foo(i);   // any indication from clang this might be a bad idea
  return 0;
}
  • 我试过 -Wall 和 -Wextra,
  • 我已经用 cppcoreguidelines-narrowing-conversions
  • 尝试了clang-tidy
  • 我试过 clang -analyze

  • 我一定在这里遗漏了一些非常简单的东西,对吧?

    最佳答案

    -Weverything option 在这种情况下很有用。它启用了 clang 的每个警告选项,包括许多 -Wall -Wextra不包括。其中许多是无用的或适得其反的,但是如果有一个警告您认为有问题的代码,这会让您找到它,并告诉您哪个选项可以专门启用它。 Try it on godbolt .
    在这种情况下,使用 -Weverything向我们展示:

    <source>:8:7: warning: implicit conversion loses integer precision: 'int' to 'short' [-Wimplicit-int-conversion]
      foo(i);   // any indication from clang this might be a bad idea
      ~~~ ^
    
    所以你想要的选项是 -Wimplicit-int-conversion .

    关于c++ - 如何让叮当警告非常简单的缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69547984/

    相关文章:

    C++排序数组函数

    c# - 编译器警告 CS1591 : How to show that warning only for undocumented methods?

    c++ - 禁用clang-tidy检查的内联方式

    c - 从不兼容的指针类型传递 arg2 'listFind'

    c++ - g++ 和 clang++ SFINAE 和 SFINAE 失败的不同行为

    c++ - 如果 constexpr 给出错误,则实例化模板函数为 false

    c++ - 如何检测 HWND 是否属于我的应用程序?

    c++ - 在 C++ 中生成组合

    c++ - 在模板中引用成员的成员

    java - 关闭 javac 警告