如何获得算术中忘记转换的警告?

Kaz*_*Kaz 5 c c++ gcc-warning

考虑这种情况:

uint64_t add(uint32_t a, uint32_t b)
{
   return a + b; // programmer neglected (uint64_t) a + b.
}
Run Code Online (Sandbox Code Playgroud)

我们如何让 GCC(或任何其他编译器)的 C 或 C++ 前端对这种情况发出警告:正在以立即变宽的窄类型完成操作?

我已经通读了当前的 GCC 文档,并尝试了各种警告,例如-Wconversion,但没有任何结果。

And*_*rus 3

我不知道 GCC 的标志会导致警告。Coverity 静态分析器将发出OVERFLOW_BEFORE_WIDEN警告,因为 CERT 标准中对此进行了标记。

免责声明:我曾经在 Coverity 工作过。