_Noreturn function specifier
_Noreturn function specifier
指定该函数不返回到其调用点。
句法
_Noreturn function_declaration | | (自C11以来) |
---|
说明
所述_Noreturn
关键字出现在函数声明和指定该函数不通过执行返回语句或到达功能体的最后返回(它可以通过执行返回longjmp
)。如果声明的函数_Noreturn
返回,则行为是未定义的。如果可以检测到,则建议使用编译器诊断。
该_Noreturn
说明符可能会出现比相同功能的声明再次,行为,如果它出现一次相同。
该说明符通常用于noreturn
标题中提供的便利宏stdnoreturn.h
。
关键词
_Noreturn
.
标准库
以下功能noreturn
位于标准库中:
abort()
例
#include <stdlib.h>
#include <stdio.h>
#include <stdnoreturn.h>
// causes undefined behavior if i <= 0
// exits if i > 0
noreturn void stop_now(int i) // or _Noreturn void stop_now(int i)
{
if (i > 0) exit(i
}
int main(void)
{
puts("Preparing to stop..."
stop_now(2
puts("This code is never executed."
}
输出:
Preparing to stop...
参考
- C11标准(ISO / IEC 9899:2011):