如何从在另一个函数中调用的函数结束程序 (C++)
How to end the program from a function which is called in another function (C++)
我有一个函数循环,就像我在下面写的代码一样调用,我想在某个时候结束 program.The 问题是我不想使用退出函数,因为我有数据动态分配我也可以在每个函数中使用 if 并一个一个退出,但我认为这会使代码更难理解,而且我有超过 3 个这样的函数。
void c()
{
//code
//I want to exit the program
}
void b()
{
c();
//code
}
void a()
{
b();
//code
}
int main()
{
a();
return 0;
}
感谢您的帮助。
您可以从所有功能 return
一直到 main
(最好)。
您可以调用 exit
的一些变体。
你可以抛出异常。
您可以使用 setjmp
/longjmp
跳转到 main
的末尾(请不要)。
您可以使应用程序崩溃(通过调用 abort
、raise(SIGKILL)
或类似的方法)。
我想不出更多的选择,但可能会有一些...
在您的函数内部使用 std::unique_ptr
任何需要动态分配的地方。
然后修改:
int main()
{
try
{
a();
}
catch(...)
{ /*... */}
return 0;
}
然后在任何deep函数里面,可以使用throw
,std::unique_ptr
会自动释放资源 。
我有一个函数循环,就像我在下面写的代码一样调用,我想在某个时候结束 program.The 问题是我不想使用退出函数,因为我有数据动态分配我也可以在每个函数中使用 if 并一个一个退出,但我认为这会使代码更难理解,而且我有超过 3 个这样的函数。
void c()
{
//code
//I want to exit the program
}
void b()
{
c();
//code
}
void a()
{
b();
//code
}
int main()
{
a();
return 0;
}
感谢您的帮助。
您可以从所有功能 return
一直到 main
(最好)。
您可以调用 exit
的一些变体。
你可以抛出异常。
您可以使用 setjmp
/longjmp
跳转到 main
的末尾(请不要)。
您可以使应用程序崩溃(通过调用 abort
、raise(SIGKILL)
或类似的方法)。
我想不出更多的选择,但可能会有一些...
在您的函数内部使用 std::unique_ptr
任何需要动态分配的地方。
然后修改:
int main()
{
try
{
a();
}
catch(...)
{ /*... */}
return 0;
}
然后在任何deep函数里面,可以使用throw
,std::unique_ptr
会自动释放资源 。