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