5. _Noreturn 关键字

_Noreturn 关键字是 C11 标准引入的一个函数说明符,它的作用是告诉编译器这个函数永远不会返回到它的调用表达式的地方。也就是说,使用此函数一旦被调用,就会以某种方式终止程序的执行,而不会返回到调用的地方继续执行。

_Noreturn 关键字 是函数说明符,用于函数标识符的声明。

语法

_Noreturn 返回类型 函数名(形式参数变量列表){ 函数体内的语句 };

说明:

  1. _Noreturn 关键字 只能用于 C11 标准的编译器中。
  2. C99 及之前的编译器对不返回的函数编译可能让会报告警告,但不会运行时出错。

示例:

写一个函数 input_numbers,输入一些列整数,此函数输入 0 时退出程序,但不会返回到调用此函数的地方。

// filename: line_func.c
#include <stdio.h>
#include <stdlib.h>

_Noreturn void input_numbers(void) {
    int number;
    while(1) {
        printf("请输入一个整数,输入0结束输入: ");
        scanf("%d", &number);
        printf("您输入的是:%d\n", number);
        if (0 == number) {
            printf("程序退出!\n");
            exit(0);  // 退出当前进程。
        }
    }
}

int main(int argc, char * argv[]) {
    input_numbers();
    printf("main 函数结束!\n"); // 此语句永远不会执行
    return 0;
}

实验:

用你的编译器尝试运行上述代码。