考虑这种情况:
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,但没有任何结果。
我不知道 GCC 的标志会导致警告。Coverity 静态分析器将发出OVERFLOW_BEFORE_WIDEN警告,因为 CERT 标准中对此进行了标记。
免责声明:我曾经在 Coverity 工作过。