_Noreturn 函式說明符 (C11 起)(C23 已棄用)
來自 cppreference.com
指定函式不會返回到其呼叫點。
目錄 |
[編輯] 語法
_Noreturn 函式宣告 | (C11 起)(C23 已棄用) | ||||||||
[編輯] 解釋
_Noreturn
關鍵字出現在函式宣告中,並指定函式不會透過執行 return 語句或到達函式體末尾而返回(它可以透過執行 longjmp 返回)。如果宣告為 _Noreturn
的函式返回,則行為未定義。如果可以檢測到這種情況,建議編譯器進行診斷。
_Noreturn
說明符可以在同一個函式宣告中出現多次,其行為與出現一次相同。
此說明符通常透過便利宏 noreturn 使用,該宏在標頭檔案 <stdnoreturn.h>
中提供。
宏 |
(自 C23 起) |
[編輯] 關鍵字
[編輯] 標準庫
以下函式在標準庫中是 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)
[編輯] 另請參閱
指示函式不返回 (屬性說明符) | |
C++ 文件 關於
[[noreturn]] |