これは何よりも便利な問題ですが、警告を抑制できる方法があるかどうかを知りたいと思います:非能動的な無用な警告を抑制する「制御は非void関数の終了に達する可能性があります」
control may reach end of non-void function [-Wreturn-type]
私がを知っている特定の場合、はコードに問題はないことが分かります。私は例外を投げるための私のコードベースにいくつかのヘルパー関数を持っており、このようなコードのために:
int foo(int i) {
if (i > 10) {
return i*10;
}
else {
Exception::throwExcept(MyCustomException("Error: i not in the accepted range"));
}
}
私はそれは、どんな返さない、またはスローするかということを知っています。したがって、警告は私の目にはあまり意味がありません。コンパイラは、制御フローのパスが実際にスローされることを判断できません。
実際にコードが間違っている(つまり、返されない、またはスローされない)というサインの場合は、この警告ポップアップが表示されます。
移植可能な方法で可能でしょうか?
EDIT:あなたのコンパイラは、それは常に例外をスローすることを知っているException::throwExcept
の内部を見ることができないようですが、私には見えます
Apple LLVM version 8.1.0 (clang-802.0.41)
@Holt 'else'の有無にかかわらず、何も変更されません。 – JBL
無意味な 'else'を削除してもまだ警告が出ますか? –
'return例外:throwExcept(MyCustomException("エラー:私は受け入れられた範囲にありません "))、0'? – NathanOliver