noreturn
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 特定的
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應