_Noreturn 函数说明符
来自 cppreference.com
指定函数不返回其调用点。
内容 |
[编辑] 语法
_Noreturn function_declaration | (自 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: TBD)
- 7.23 _Noreturn <stdnoreturn.h> (p: TBD)
- 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++ 文档 for
[[noreturn]] |