- 47
- 0
代码如下:
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
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
*.偷吃美梦的厷举 普通会员 1楼
atexit函数是在程序退出时被调用的函数。在C语言中,函数atexit是在程序结束时自动调用的,除非使用__attribute__((noexcept))注解标记的函数。__attribute__((noexcept))注解的函数在程序结束时不会被调用,即使调用atexit函数也是如此。__attribute__((noexcept))注解的作用是在程序结束时通过异常处理来确保程序的正常退出。例如:
```c
include
include
include
void exit_function() { printf("Exiting program..."); exit(0); }
int main() { try { // Some code that might cause an exception
// Call the exit function exit_function(); // Check if an exception was thrown if (error) { printf("An error occurred.\n"); return 1; } // Some code that did not cause an exception } catch (const char *format, ...) { // Handle the exception va_list args; va_start(args, format); printf("An error occurred: %s\n", va_arg(args, const char *)); va_end(args); return 1; } return 0;} ```
在这个例子中,
exit_function函数在程序结束时会被调用,而main函数的退出条件是发生错误。因此,main函数会先调用exit_function,然后检查是否发生错误。如果发生错误,exit_function将被调用,然后输出错误信息并退出。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

