C语言中的Noreturn函数说明符详细介绍

2021年3月9日15:47:35 发表评论 1,784 次浏览

删除" noreturn"关键字后, C编程语言的C11标准(称为最终草案)引入了新的" _Noreturn"函数说明符, 该说明符指定函数不返回到从其调用的函数。如果程序员尝试从该函数返回声明为_Noreturn类型的任何值, 则编译器会自动生成编译时错误。

// C program to show how _Noreturn type 
// function behave if it has return statement.
#include <stdio.h>
#include <stdlib.h>
  
// With return value
_Noreturn void view()
{
     return 10;
}
int main( void )
{
     printf ( "Ready to begin...\n" );
     view();
  
     printf ( "NOT over till now\n" );
     return 0;
}

输出如下:

Ready to begin...
After that abnormal termination of program.
compiler error:[Warning] function declared 'noreturn' has a 'return' statement
// C program to illustrate the working 
// of _Noreturn type function.
#include <stdio.h>
#include <stdlib.h>
  
// Nothing to return
_Noreturn void show()
{
     printf ( "BYE BYE" );
}
int main( void )
{
     printf ( "Ready to begin...\n" );
     show();
  
     printf ( "NOT over till now\n" );
     return 0;
}

输出如下:

Ready to begin...
BYE BYE

参考:http://en.cppreference.com/w/c/language/_Noreturn

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: