名稱空間
變體
操作

_Noreturn 函式說明符 (C11 起)(C23 已棄用)

來自 cppreference.com
< c‎ | 語言

指定函式不會返回到其呼叫點。

目錄

[編輯] 語法

_Noreturn 函式宣告 (C11 起)(C23 已棄用)

[編輯] 解釋

_Noreturn 關鍵字出現在函式宣告中,並指定函式不會透過執行 return 語句或到達函式體末尾而返回(它可以透過執行 longjmp 返回)。如果宣告為 _Noreturn 的函式返回,則行為未定義。如果可以檢測到這種情況,建議編譯器進行診斷。

_Noreturn 說明符可以在同一個函式宣告中出現多次,其行為與出現一次相同。

此說明符通常透過便利宏 noreturn 使用,該宏在標頭檔案 <stdnoreturn.h> 中提供。

_Noreturn 函式說明符已棄用。應改用 [[noreturn]] 屬性。

noreturn 也已棄用。

(自 C23 起)

[編輯] 關鍵字

_Noreturn

[編輯] 標準庫

以下函式在標準庫中是 noreturn

[編輯] 示例

#include <stdio.h>
#include <stdlib.h>
#include <stdnoreturn.h>
 
// causes undefined behavior if i <= 0
// exits if i > 0
noreturn void exit_now(int i) // or _Noreturn void exit_now(int i)
{
    if (i > 0)
        exit(i);
}
 
int main(void)
{
    puts("Preparing to exit...");
    exit_now(2);
    puts("This code is never executed.");
}

輸出

Preparing to exit...

[編輯] 參考文獻

  • C23 標準 (ISO/IEC 9899:2024)
  • 6.7.4 函式說明符 (p: 待定)
  • 7.23 _Noreturn <stdnoreturn.h> (p: 待定)
  • C17 標準 (ISO/IEC 9899:2018)
  • 6.7.4 函式說明符 (p: 90-91)
  • 7.23 _Noreturn <stdnoreturn.h> (p: 263)
  • C11 標準 (ISO/IEC 9899:2011)
  • 6.7.4 函式說明符 (p: 125-127)
  • 7.23 _Noreturn <stdnoreturn.h> (p: 361)

[編輯] 另請參閱

[[noreturn]](C23)[[_Noreturn]](C23)(已棄用)
{{{註釋}}}
指示函式不返回
(屬性說明符)[編輯]
C++ 文件 關於 [[noreturn]]