![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
在程序退出main()函数之后,还有可能执行一部分代码吗?
4个回答
2013-09-17
展开全部
可以,但这要借助C库函数atexit()。利用atexit()函数可以在程序终止前完成一些“清理”工作——如果将指向一组函数的指针传递给atexit()函数,那么在程序退出main()函数后(此时程序还未终止)就能自动调用这组函数。在使用atexit()函数时你要注意这样两点:
第一: 由atexit()函数指定的要在程序终止前执行的函数要用关键字void说明,并且不能带参数;
第二: 由atexit()函数指定的函数在入栈时的顺序和调用atexit()函数的顺序相反,即它们在执行时遵循后进先出(LIFO)的原则。
#include<stdlib.h>
#include<stdio.h>
void my_exit1(void)
{
printf("my_exit1() function !/n");
}
void my_exit2(void)
{
printf("my_exit2() function !/n");
}
void main()
{
atexit ( my_exit1 );
atexit ( my_exit2 );
printf("now, eixt this program.../n");
}
输出结果为:
now, eixt this program...
my_exit2() function !
my_exit1() function !
阿秋!!!
第一: 由atexit()函数指定的要在程序终止前执行的函数要用关键字void说明,并且不能带参数;
第二: 由atexit()函数指定的函数在入栈时的顺序和调用atexit()函数的顺序相反,即它们在执行时遵循后进先出(LIFO)的原则。
#include<stdlib.h>
#include<stdio.h>
void my_exit1(void)
{
printf("my_exit1() function !/n");
}
void my_exit2(void)
{
printf("my_exit2() function !/n");
}
void main()
{
atexit ( my_exit1 );
atexit ( my_exit2 );
printf("now, eixt this program.../n");
}
输出结果为:
now, eixt this program...
my_exit2() function !
my_exit1() function !
阿秋!!!
2013-09-17
展开全部
可能, 有一个在stdlib.h通用工具的函数叫做“atexit”。 原型为“int atexit(void (* func) (void));” 函数描述为“注册func指向的函数,使它在程序正常结束后被调用; 实现应该至少支持注册32个函数, 按照它们注册的想到顺序进行调用; 如果注册成功, 函数返回0, 否则返回一个非0值”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-17
展开全部
不会。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-17
展开全部
mian之后确实有代码,但是内容却不知道,都是windows内部的一些清理工作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询