首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

_Noreturn function specifier

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

句法

_Noreturn function_declaration

?

(自C11以来)

说明

所述_Noreturn关键字出现在函数声明和指定该函数不通过执行返回语句或到达功能体的最后返回(它可以通过执行返回longjmp)。如果声明的函数_Noreturn返回,则行为是未定义的。如果可以检测到,则建议使用编译器诊断。

_Noreturn说明符可能会出现比相同功能的声明再次,行为,如果它出现一次相同。

该说明符通常用于noreturn标题中提供的便利宏stdnoreturn.h

关键词

_Noreturn.

标准库

以下功能noreturn位于标准库中:

  • abort()
  • exit()
  • _Exit()
  • quick_exit()
  • thrd_exit()
  • longjmp()

代码语言:javascript
复制
#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.");
}

输出:

代码语言:javascript
复制
Preparing to stop...

参考

  • C11标准(ISO / IEC 9899:2011):
    • 6.7.4函数说明符(p:125-127)
    • 7.23 _Noreturn <stdnoreturn.h>(p:361)

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com