从范围跳转

问题描述 投票:-2回答:1

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

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:​​将单词命名空间更改为范围

c++ scope break goto continue
1个回答
2
投票

是的,您需要使用goto跳出范围。

break只能用于跳出循环或切换。

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

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

        if (!head_size) {
            break;
        }

        ... // Code

        if (!tail_size) {
            break;
        }

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

    {
        ... // Error handling code
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.