2016-07-25 69 views
1

函數定義中如何獲得「假定沒有符號溢出」警告?- 函數定義中的嚴重溢出警告

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。

+0

也許有什麼*裏面*導致問題的功能?就像產生返回值一樣。但我們不能在這裏說。 –

+0

@BoPersson不,所有返回值都是ushort或uint – Zhigalin

+4

在問題中包含函數/函數調用的主體,因爲它是問題的一部分。 – Dutow

回答

1

因爲功能定義包括函數的主體。身體顯然可以包含一個簽名溢出。

您顯示的部分在參數列表後面既不包含;也不包含{,因此它無論如何都不完整。

編譯器在定位診斷的確切位置時遇到問題時可能會出錯。當診斷是由正在處理已經經歷了很多轉換的代碼的優化器引起時,這是特別常見的。

+0

我如何更深入地檢查它? – Zhigalin