c语言标准库函数atexit在何时调用?

代码如下:
void f1(void){

printf("Running f1.\n");

}

void f2(void){

printf("Running f2.\n");

}

int main(){

printf("Registering f1 and f2: ");

if(atexit(f1)||atexit(f2)){
    printf("failed.\n");
}
else{
    printf("done.\n");
    exit(0);
}

}
运行结果如下:
Registering f1 and f2: done.
Running f2.
Running f1.
我的疑问是:
当程序运行到if时,如何知道atexit函数的返回值,我看关于atexit函数的说明都是在程序正常退出时调用,可是现在在if判断时程序还没退出,程序怎么进行判断的呢?

阅读 2.1k
1 个回答

atexit只是注册了一个函数,它返回注册是否成功。注册的函数要等到main函数退出后才会运行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进