[C語言] 函數在退出時幹了些什麼?atexit函數的使用

本文於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語言版本的影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章