_onexit注册函数,LIFO

来源:互联网 发布:钓鱼城之战 知乎 编辑:程序博客网 时间:2024/05/19 09:16
 main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?
答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行

#include <stdio.h>
#include <stdlib.h>


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;
}




The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.



原创粉丝点击