atexit - C++ Builder

C++ Builder 参考手册 ➙ atexit


头文件:#include
命名空间: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 
#include 

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

C++ Builder 参考手册 ➙ atexit

你可能感兴趣的:(atexit - C++ Builder)