本文於2016-6-11發佈於博主的空間,是後來才搬運過來的
函數執行完最後一行便退出嗎?main函數是一個程序的結束嗎?其實不是。
在stdlib庫裏面有一個叫atexit的函數,它的參數是一個函數指針,它的作用是當調用它的函數即將退出之時調用該函數指針指向的函數。雖然這個函數對於我來說用處不大,但它至少讓我對程序運行有了新的認識。
使用它可以在函數退出之前做一些善後工作
示例代碼:
#include <stdio.h>
#include <stdlib.h>
void bar()
{
printf("func bar\n");
}
void foo()
{
atexit(&bar);
printf("func foo\n");
}
int main()
{
atexit(&foo);
printf("func main\n");
return 0;
}
運行結果:
func main
func foo
func bar
需要注意的是,這個程序放在VC6.0上面運行的話,atexit函數只在main函數裏有作用,是不會執行bar函數的,應該是受到了C語言版本的影響。