noreturn
Microsoft 固有の仕様 →
この __declspec 属性は、コンパイラに、関数が戻らないことを示します。 結果として、コンパイラは __declspec(noreturn) 関数への呼び出しに続くコードは制御が渡らないことを認識します。
コンパイラで値を返さないコントロール パスの関数が検出されると、警告 (C4715) またはエラー メッセージ (C2202) が生成されます。 関数が値を返さないためコントロール パスに到達できない場合は、__declspec(noreturn) を使用してこの警告やエラーを回避できます。
注意
返されると予想される関数へ __declspec(noreturn) を追加すると、未定義の動作になることがあります。
使用例
次の例では、else 句に return ステートメントは含まれていません。 fatal を __declspec(noreturn) として宣言すると、エラーまたは警告メッセージを回避できます。
// noreturn2.cpp
__declspec(noreturn) extern void fatal () {}
int main() {
if(1)
return 1;
else if(0)
return 0;
else
fatal();
}