-函数定义中的Wstrict溢出警告

-Wstrict-overflow warning in a function definition

本文关键字:Wstrict 溢出 警告 函数 定义      更新时间:2023-10-16

如何可能获得函数定义的"假定没有签名溢出"警告?

warning: assuming signed overflow does not occur when assuming that 
                           (X + c) < X is always false [-Wstrict-overflow]
unsigned int index(const ItemRequest& request)
             ^

函数体可在此处找到。

这似乎很奇怪,因为返回值只有ushort或uint。

因为函数定义包含函数的主体。正文显然可以包含一个带符号的溢出。

您显示的部分在参数列表之后既不包含;也不包含{,因此它无论如何都是不完整的。

编译器在定位诊断的确切位置时可能会出现错误。当诊断是由优化器引起的时,这种情况尤其常见,因为优化器正在处理已经经过多次转换的代码。