函数定义中的-Wstrict-overflow警告

时间:2016-07-25 09:46:22

标签: c++ compiler-warnings

如何为函数定义获取“假设没有签名溢出”警告?

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

可以找到功能正文here

这看起来很奇怪,因为返回值只是ushort或uint。

1 个答案:

答案 0 :(得分:1)

因为函数定义包含函数体。身体显然可以包含签名溢出。

您展示的部分在参数列表后面既不包含;也不包含{,所以它无论如何都不完整。

如果编译器在查找诊断的确切位置时遇到问题,您可能会收到错误。当诊断是由优化器引起时,这种情况尤为常见,优化器正在处理已经经历过相当多变换的代码。