命名空间
变体
操作

_Noreturn 函数说明符

来自 cppreference.com
< c‎ | 语言

指定函数不返回其调用点。

内容

[编辑] 语法

_Noreturn function_declaration (自 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: 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]]