怎样在main()函数退出之后再执行一段代码?
1. 全局对象
在main()函数执行后,程序退出,这时候会对全局变量和全局对象进行销毁操作,所以还会执行析构函数的代码。
2. atexit 函数
使用atexit函数,注册一个或多个函数,它们被注册在栈中, 在 main 函数结束后被调用,调用顺序与注册顺序相反。
摘自http://www.cnblogs.com/wxxweb/archive/2011/05/25/2055696.html
#include <stdlib.h>
#include <stdio.h>
//
// 声明将在 main 函数结束后执行的函数.
// 这样的函数前置声明很特别吧!我以前也没想到过.
//
void fn1(void), fn2(void), fn3(void), fn4(void);
int main(void)
{
//
// 注册需要在 main 函数结束后执行的函数.
// 请注意它们的注册顺序和执行顺序,看看它们的输出结果多有趣!
//
atexit(fn1);
atexit(fn2);
atexit(fn3);
atexit(fn4);
// 这条输出语句具有参照性,它可不是最后一句输出.
puts("This is executed first.");
//
// EXIT_SUCCESS 代表 0,它定义在 stdlib.h 中.
// 我只是顺便提一下,也许你知道,但我担心你不知道,呵呵.
return EXIT_SUCCESS;
}
void fn1(void)
{
printf("next.\n");
system("pause");
}
void fn2(void)
{
printf("executed ");
}
void fn3(void)
{
printf("is ");
}
void fn4(void)
{
printf("This ");
}