C++ Builder 參考手冊(cè) ? <cstdlib> ? exit, _exit, _Exit
頭文件:#include <cstdlib>
命名空間:std
函數(shù)原型:
void exit(int status);
void _exit(int status);
void _Exit(int status);
參數(shù):
status:給操作系統(tǒng)或父進(jìn)程的返回值:
0:正常結(jié)束推汽,非0:異常結(jié)束弧圆。
返回值:
無(wú)慕淡。
要注意 _Exit 和 _exit 首字母大小寫不同棍丐,它們是不同的函數(shù)井联,這幾個(gè)函數(shù)的具體區(qū)別如下:
- exit 是標(biāo)準(zhǔn) C/C++ 函數(shù),結(jié)束進(jìn)程粪牲,并且調(diào)用 atexit 添加的函數(shù)欣舵,調(diào)用全局變量的析構(gòu)函數(shù),但是不會(huì)調(diào)用當(dāng)前函數(shù)的局部變量的析構(gòu)函數(shù)揭鳞,不會(huì)彈出錯(cuò)誤信息 (無(wú)論參數(shù)的值是多少)炕贵;
- _exit 不是標(biāo)準(zhǔn) C/C++ 函數(shù),但是很多編程開發(fā)工具野崇,例如 C++ Builder 或 Visual C++ 里面都有這個(gè)函數(shù)鲁驶,MSDN 里面也有說(shuō)明,是和 exit 相同的函數(shù)舞骆;
- _Exit 是 C++ 11 函數(shù)钥弯,結(jié)束進(jìn)程径荔,不會(huì)調(diào)用任何的析構(gòu)函數(shù),如同 abort 但是不會(huì)彈出錯(cuò)誤信息脆霎。
這些函數(shù)的 status 參數(shù)可以是 (不限于) 以下表格的常數(shù):
常數(shù) | 值 | 說(shuō)明 |
---|---|---|
EXIT_SUCCESS | 0 | 程序正常結(jié)束 |
EXIT_FAILURE | 1 | 程序異常結(jié)束 |
以下表格為程序測(cè)試結(jié)果:
退出時(shí)執(zhí)行的函數(shù) | 執(zhí)行 std::abort | 執(zhí)行 std::exit |
---|---|---|
使用 std::atexit 添加的函數(shù) | [ ] |
[√] |
使用 Sysutils::AddExitProc 添加的函數(shù) | [ ] |
[√] |
使用 Sysutils::AddTerminateProc 添加的函數(shù) | [ ] |
[ ] |
使用 #pragma exit 添加的函數(shù) | [ ] |
[√] |
當(dāng)前函數(shù)局部變量的析構(gòu)函數(shù) | [ ] |
[ ] |
主窗口析構(gòu)函數(shù) | [ ] |
[√] |
全局變量析構(gòu)函數(shù) | [ ] |
[√] |
例子:
void _USERENTRY Func1(void)
{
ShowMessage(L"正在執(zhí)行函數(shù) Func1");
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
std::atexit(Func1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::exit(EXIT_SUCCESS);
}
運(yùn)行結(jié)果:
點(diǎn)擊 Button1 按鈕总处,彈出 std::atexit 添加的函數(shù)打開的提示信息對(duì)話框:“正在執(zhí)行函數(shù) Func1”,關(guān)閉這個(gè)對(duì)話框睛蛛,程序退出鹦马。
相關(guān):
- std::abort
- std::atexit
- System::Sysutils::Abort
- System::Sysutils::AddExitProc
- System::Sysutils::AddTerminateProc
- System::Sysutils
- <cstdlib>
C++ Builder 參考手冊(cè) ? <cstdlib> ? exit, _exit, _Exit