atexit
於結束時處理指定的函式。
語法
int atexit(
void (__cdecl *func )( void )
);
參數
func
即將呼叫的函式。
傳回值
若成功,則 atexit
傳回 0;若發生錯誤,則為非零值。
備註
函 atexit
式會在程式正常終止時傳遞要呼叫之函式的 func
位址。 後續呼叫 atexit
會建立依後進先出 (LIFO) 順序執行的函式的暫存器。 傳遞至 atexit
的函式無法接受參數。 atexit
和 _onexit
使用堆積保存函式暫存器。 因此,可以登錄的函式數目僅受限於堆積記憶體。
函式中的 atexit
程式代碼不應該包含呼叫函式時 atexit
可能已經卸除之任何 DLL 的任何相依性。
若要產生符合 ANSI 標準的應用程式,請使用 ANSI 標準 atexit
函式(而不是類似的 _onexit
函式)。
需求
常式 | 必要的標頭 |
---|---|
atexit |
<stdlib.h> |
範例
此程式會在呼叫 atexit
時將四個函式推入要執行的函式堆疊。 當程式結束時,這些程式會依後進先出的基礎執行。
// crt_atexit.c
#include <stdlib.h>
#include <stdio.h>
void fn1( void ), fn2( void ), fn3( void ), fn4( void );
int main( void )
{
atexit( fn1 );
atexit( fn2 );
atexit( fn3 );
atexit( fn4 );
printf( "This is executed first.\n" );
}
void fn1()
{
printf( "next.\n" );
}
void fn2()
{
printf( "executed " );
}
void fn3()
{
printf( "is " );
}
void fn4()
{
printf( "This " );
}
This is executed first.
This is executed next.