C++ Builder 参考手册 ➙ <cstdlib> ➙ atexit
头文件:#include <cstdlib>
命名空间:std
函数原型:
int atexit(void (_USERENTRY *func)(void));
参数:
func:要添加的在程序退出时运行的函数,这个参数是 atexit_t 类型的函数指针,即没有参数和返回值的,_USERENTRY 调用约定的函数。
返回值:
0:成功,非0:失败,添加的函数超过了 32 个。
- 添加一个在程序退出时运行的函数,先添加的后执行,后添加的先执行;
- 最多能添加 32 个这样的函数;
- 程序正常退出时,执行的顺序:
• std::atexit 添加的函数,先添加的后执行,后添加的先执行;
• #pragma exit 添加的函数,按照优先级,或者 #pragma package(smart_init) 的控制;
• 全局变量的析构函数。
例1:
void _USERENTRY Func1(void)
{
ShowMessage(L"正在执行函数 Func1");
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
std::atexit(Func1);
}
运行结果:

运行结果:当程序退出时,弹出对话框:“正在执行函数 Func1”
例2:
#include <cstdlib>
#include <iostream>
using namespace std;
void _USERENTRY Func1(void)
{
cout << "Func1" << endl;
}
void _USERENTRY Func2(void)
{
cout << "Func2" << endl;
}
int main(void)
{
atexit(Func1);
atexit(Func2);
cout << "Test std::atexit - Hsuanlu" << endl;
return 0;
}
运行结果:

运行结果:程序退出时,先添加的后执行,后添加的先执行
相关:
- std::atexit_t
- std::exit
- std::abort
- std::_Exit
- System::Sysutils::AddExitProc
- System::Sysutils::TProcedure
- System::Sysutils::AddTerminateProc
- System::Sysutils::TTerminateProc
- System::Sysutils
- <cstdlib>
C++ Builder 参考手册 ➙ <cstdlib> ➙ atexit