私が次の機能を持っているとしましょう:
Thingy& getThingy(int id)
{
for ( int i = 0; i < something(); ++i )
{
// normal execution guarantees that the Thingy we're looking for exists
if ( thingyArray[i].id == id )
return thingyArray[i];
}
// If we got this far, then something went horribly wrong and we can't recover.
// This function terminates the program.
fatalError("The sky is falling!");
// Execution will never reach this point.
}
コンパイラは通常、「すべての制御パスが値を返すわけではない」と不平を言います。これは技術的には正しいですが、値を返さない制御パスは、関数が終了する前にプログラムを中止するため、意味的に正しいものです。警告を完全に抑制したり、無意味なダミーを返したりせずに、このチェックの目的で特定の制御パスを無視することをコンパイラー(私の場合はVS2010ですが、他の人にも興味があります)に伝える方法はありますか?関数の最後の値?