从示波器上跳下来

时间:2018-09-02 11:12:57

标签: c++ scope break goto continue

是否可以从未命名的范围跳转?

void MyFunc() {
    {
        ... // Code

        if (!head_size) {
            goto _common_error; // <- break and continue don't work here
        }

        ... // Code

        if (!tail_size) {
            goto _common_error; // second time
        }

        ... // Code
    }

    _common_error:
    {
        ... // Code
    }
}

我的问题不是是否可以重新设计它,而是我不知道c ++中是否有一个窍门。

除了goto之外,c ++中是否有一种机制可以跳出未命名的范围?中断并继续操作不适用于范围。

Update1:​​将单词命名空间更改为作用域

1 个答案:

答案 0 :(得分:2)

是的,您需要使用goto跳出示波器。

break仅可用于跳出循环或切换。

但是您可以通过使用虚拟循环来使用(可疑)技巧:

void MyFunc() {
    do {
        ... // Code

        if (!head_size) {
            break;
        }

        ... // Code

        if (!tail_size) {
            break;
        }

        ... // Code
    } while (false);

    {
        ... // Error handling code
    }
}