如何跳出一个C ++代码块的?(How to jump out of a C++ code bloc

2019-06-27 23:07发布

这是我想做些什么:

{
    ...
    if(condition)
        break;
    ...
}

这适用于一个循环。 我想了一个简单的代码块类似的东西。 可能吗?
我是被迫使用“转到”?


我认为,这样的扩展break声明将是一个有益的补充,以C ++ 11 ...

Answer 1:

怎么样

do
{
    ...
    if(condition)
        break;
    ...
}
while (0);

我不是特别喜欢这样的风格,但我以前见过它。 如果重构是不可能的(可能是改变是否可以打破很多东西一个巨大的块),这是一种选择。



Answer 2:

这个:

{
    // ...

    if (!condition)
    {
        // ...
    }
}

这将避免goto跳出代码块的。



Answer 3:

这里有一种方法:

switch(0) {
default:
    /* code */
    if (cond) break;
    /* code */
}

(请从来没有做到这一点)



Answer 4:

这里只是一些额外的可能性:

for(..)
{
    continue;//next loop iteration
}

void mymethod()
{
    ...
    return;
    ...
}

也许你应该为有问题的代码块子方法是你想使用goto和收益的使用留下的代码块。



Answer 5:

C ++ 11,以达到最佳的方式,这是使用匿名lambda函数和更换breakreturn

[&](){
    ...
    if(condition)
        return;
    ...
 }();

需要注意的是[&]通过参考捕捉所有的变量,如果你不使用任何只是更换[]



Answer 6:

“我想为一个简单的代码块类似的东西。”

使用return一个条件得到满足后,与return控制权返回给调用者。

void MyWorkerClass::doWork(Item & workItem) {
    // ...
    if(noMoreWorkToDo)
        return;
    // ...
}


文章来源: How to jump out of a C++ code block?