C++ 中的at_quick_exit() 函数注册了一个在程序快速终止时调用的函数,即通过quick_exit() 终止。
调用quick_exit() 函数时,调用at_quick_exit() 函数中注册的函数。
at_quick_exit()原型
extern int at_quick_exit (void (*func)(void));
该函数在<cstdlib> 头文件中定义。
参数:
func
:指向要在快速程序终止时调用的函数的指针。
返回:
at_quick_exit() 函数返回:
- 如果函数注册成功,则为零。
- 如果函数注册失败,则非零。
示例 1:at_quick_exit() 函数如何工作?
#include <iostream>
#include <cstdlib>
using namespace std;
void bye()
{
cout << "Program Exiting via quick_exit()";
}
int main()
{
at_quick_exit(bye);
cout << "Inside Main" << endl;
quick_exit(0);
return 0;
}
运行程序时,输出将是:
Inside Main Program Exiting via quick_exit()
可以注册多个函数以在快速退出时执行。
如果使用at_quick_exit()注册了多个函数,则它们按相反的顺序执行,即最后注册的函数首先执行。可以多次注册相同的函数。
可以使用at_quick_exit() 注册的函数调用的数量取决于特定的库实现。但是,最低限制是 32。
示例 2:使用at_quick_exit() 注册多个函数
#include <iostream>
#include <cstdlib>
using namespace std;
void quick_exit1()
{
cout << "Exit Function 1" << endl;
}
void quick_exit2()
{
cout << "Exit Function 2" << endl;
}
void quick_exit3()
{
cout << "Exit Function 3" << endl;
}
int main()
{
int x1, x2, x3;
/* Executed at last*/
x1 = at_quick_exit(quick_exit1);
x2 = at_quick_exit(quick_exit2);
/* Executed at first */
x3 = at_quick_exit(quick_exit3);
if ((x1 != 0) or (x2 != 0) or (x3 != 0))
{
cout << "Registration Failed";
exit(1);
}
cout << "Registration successful" << endl;
quick_exit(0);
}
运行程序时,输出将是:
Registration successful Exit Function 3 Exit Function 2 Exit Function 1
如果已注册的函数在终止时调用时抛出未处理的异常,则会调用 terminate() 函数。
示例 3:at_quick_exit() 函数抛出未处理的异常
#include <iostream>
#include <cstdlib>
using namespace std;
void bye()
{
cout << "Generates Exception";
int a = 5, b = 0;
int x = a/b;
}
int main()
{
int x;
x = at_quick_exit(bye);
if (x != 0)
{
cout << "Registration Failed";
exit(1);
}
cout << "Registration successful" << endl;
quick_exit(0);
}
运行程序时,输出将是:
Registration successful Generates Exception [The program will terminate with error]
相关用法
- C++ atexit()用法及代码示例
- C++ atof()用法及代码示例
- C++ atol()用法及代码示例
- C++ atoll()用法及代码示例
- C++ atan()用法及代码示例
- C++ complex atanh()用法及代码示例
- C++ atoi()用法及代码示例
- C++ complex atan()用法及代码示例
- C++ atan2()用法及代码示例
- C++ atanh()用法及代码示例
- C++ any_of()用法及代码示例
- C++ abort()用法及代码示例
- C++ complex acosh()用法及代码示例
- C++ array at()用法及代码示例
- C++ array::fill()、array::swap()用法及代码示例
- C++ array::size()用法及代码示例
- C++ array::rbegin()、array::rend()用法及代码示例
- C++ complex abs()用法及代码示例
- C++ array::front()、array::back()用法及代码示例
- C++ array::front()用法及代码示例
注:本文由纯净天空筛选整理自 C++ at_quick_exit()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。