C++ 在C++;,是否要从将结束父函数的嵌套函数中返回?
我希望这样的事情发生:C++ 在C++;,是否要从将结束父函数的嵌套函数中返回?,c++,function,if-statement,return,break,C++,Function,If Statement,Return,Break,我希望这样的事情发生: void a(){ b() // if condition met in b(), exit out of this function also } void b(){ if(condition){ super return // also returns out of function a } } 我似乎想不出一个办法来做这件事。任何帮助都将不胜感激。谢谢 您可以通过以下任何一种方式完成 从第二个方法返回
void a(){
b()
// if condition met in b(), exit out of this function also
}
void b(){
if(condition){
super return
// also returns out of function a
}
}
我似乎想不出一个办法来做这件事。任何帮助都将不胜感激。谢谢 您可以通过以下任何一种方式完成
void a(){
if(b())
return;
}
bool b(){
if(condition){
// do something
return true;
}
}
b必须是空的吗?您可以通过以下方式正常完成:
void a()
{
// if condition met in b(), exit out of this function also
if( !b() )
{
return;
}
//continue...
}
bool b(){
if(condition)
{
return false;
// also returns out of function a
}
return true;
}
C++没有办法按你的要求去做。有4种机制可以实现类似的目标
编辑:分别处理全局值和返回值
请注意,这是一个复杂的主题,对于粗心的人来说有许多陷阱,包括在非平凡析构函数中使用longjmp的未定义行为。警告程序员 “有例外吗?”宋元耀说brutal@AlexeyAndronov是的,这就是为什么它是“超级返回”。另外两个选择是从
b()
返回一个值-尽管这依赖于a()
检查返回值-以及调用像exit()
这样的函数,它们有效地从每个调用的函数返回,包括main()
以退出程序。注意。如果调用<代码> LojJMP 会导致非平凡析构函数被跳过,则它是未定义的行为,因此只能在非常有限的C++中使用。我认为exit()不属于这个问题。