2016-07-25 10 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

funciton /関数呼び出しの本体を質問に含めます。これは質問の一部です。 – Dutow

答えて

1

関数の定義には、関数本体が含まれているためです。ボディには、明らかに署名付きオーバーフローが含まれている可能性があります。

あなたが表示する部分には、引数リストの後に;{も含まれていないため、とにかく不完全です。

コンパイラが診断の正確な場所を特定する際に問題が発生する場合があります。これは、診断が、かなりの数の変換を既に経ているコードを処理しているオプティマイザによって引き起こされた場合に特に一般的です。

+0

どうすればそれを深く調べることができますか? – Zhigalin

関連する問題