如何退出函数,但不退出main()
how to exit from a function but not from main()
C/c++是否支持从子程序函数(即非main)终止程序?到目前为止,我只发现exit和abort允许用户终止当前函数或进程。如果我不在main函数中,有没有办法终止整个程序?
如果您不在main()
和其他函数中,那么您也可以调用exit()
或abort()
,它将终止整个进程。
exit()
将执行所需的清理,而abort()
将不执行。
exit(0) or exit(1)
如果是0
或EXIT_SUCCESS
,则表示成功。如果是EXIT_FAILURE
,表示失败。
ref: See here
既然你说的是c++,考虑 std::terminate
u now, for “ C/c++是否支持从子程序函数(即非main)终止程序?
默认情况下std::terminate
调用abort
,但这可以通过通过std::set_terminate
安装处理程序来配置
void exit (int status)
上述方法正常终止进程,为终止程序执行定期清理。
正常程序终止执行以下操作(顺序相同):
-
与当前线程关联的具有线程存储时间的对象被销毁(仅限c++ 11)。
-
具有静态存储时间的对象被销毁(c++),调用在atexit中注册的函数。
-
所有C流(打开函数in)被关闭(和刷新,如果缓冲),并删除所有使用tmpfile创建的文件。
之后Control返回到主机环境。
当它终止调用进程时,因为你的函数是同一进程的一部分,所以在其中使用exit()将终止程序。
只有在main函数中调用该函数时才有可能。从你想要终止程序的那个函数返回一个值用于终止程序,例如-1。
的例子:
void main()
{
//Call to a function
int i = functionFromMain();
if(i == -1)
{
//Terminate Program
}
}
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 代码在main()中运行,但在函数中出现错误
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何让LLDB在成功时退出,在失败时等待
- C++控制台应用程序阻止退出
- 程序在执行程序的其余部分之前退出
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 构造函数在退出函数时无法初始化一个参数
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 即使将返回 0 作为 main 的第一行,程序也无法退出C++
- C++,Win32:如何在 main() 退出后调用函数
- main:返回0挂起,退出0关闭.如何调试
- 为什么我的程序在调用main之前就退出了
- 在函数 '_start' 中: (.text+0x20): 未定义对 'main' 的引用 collect2: ld 返回 1 个退出状态
- C++:如何在main()退出后打印一些文本
- 如何退出函数,但不退出main()
- 无法退出,因为析构函数错误导致main()在退出时停止执行
- c++子线程在main()父线程退出时终止