Microsoft 特定的
屬性 __declspec 會告知編譯程式函式不會傳回。 編譯程式接著知道呼叫 __declspec(noreturn) 函式之後的程式代碼無法連線。
如果編譯器發現某個函式包含的控制路徑不會傳回值,則會產生警告 (C4715) 或錯誤訊息 (C2202)。 如果因為從未傳回的函式而無法連線到控件路徑,請使用 __declspec(noreturn) 來防止這個警告或錯誤。
注意
將 新增 __declspec(noreturn) 至預期傳回的函式可能會導致未定義的行為。
範例
在下列範例中,呼叫 的 isZeroOrPositive 自變數為負 fatal 數時。 該控件路徑中沒有 return 語句,這會導致警告 C4715,並非所有控件路徑都會傳回值。 宣告 fatal 為 __declspec(noreturn) 可減輕該警告,這是可取的,因為它沒有點,因為終止 fatal() 程式。
// noreturn2.cpp
#include <exception>
__declspec(noreturn) void fatal()
{
std::terminate();
}
int isZeroOrPositive(int val)
{
if (val == 0)
{
return 0;
}
else if (val > 0)
{
return 1;
}
// this function terminates if val is negative
fatal();
}
int main()
{
isZeroOrPositive(123);
}
END Microsoft 特定的