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 特定的

另請參閱

__declspec
關鍵字