在main()函数执行之前执行的代码:
全局对象的构造函数
那么在main() 函数之后可以执行代码么:
_onexit()函数可以实现该功能:
点击(此处)折叠或打开
-
/* ONEXIT.C */
-
-
#include <stdlib.h>
-
#include <stdio.h>
-
-
/* Prototypes */
-
int fn1(void), fn2(void), fn3(void), fn4 (void);
-
-
void main( void )
-
{
-
_onexit( fn1 );
-
_onexit( fn2 );
-
_onexit( fn3 );
-
_onexit( fn4 );
-
printf( "This is executed first.\n" );
-
}
-
-
int fn1()
-
{
-
printf( "next.\n" );
-
return 0;
-
}
-
-
int fn2()
-
{
-
printf( "executed " );
-
return 0;
-
}
-
-
int fn3()
-
{
-
printf( "is " );
-
return 0;
-
}
-
-
int fn4()
-
{
-
printf( "This " );
-
return 0;
-
}
输出如下:
This is executed first.
This is executed next.
后来测试在VC下可以正常编译通过,但是在linux下一直如法编译成功。不知道是linux下没有该函数还是头文件包含错误,后来找到另一个函数在linux下可实现该功能:
点击(此处)折叠或打开
-
#include <stdlib.h>
-
#include <stdio.h>
-
-
void my_exit(int status,void *arg)
-
{
-
printf("before exit()!\n");
-
-
printf("exit (%d)\n", status);
-
-
printf("arg = %s\n",(char*)arg);
-
}
-
-
-
int main()
-
{
-
char * str="test";
-
-
on_exit(my_exit,(void *)str);
-
-
printf("main exit\n");
-
exit(1234);
-
}
输出如下:
main exit
before exit()!
exit (1234)
arg = test
阅读(1077) | 评论(0) | 转发(0) |