跳入 if(false) 块有什么问题吗?

Is there any problem in jumping into if(false) block?

我已经读过几次(例如这里 ),任何体面的 c++ 编译器都会选择退出

if(false)
{
 ...
}

但是,如果有意跳入此 if(false) 块怎么办。我有这样的想法

#include <iostream>

void func(int part){
    switch (part) {
    case 0:{
        if(false)
            case 1:{std::cout << "hello" << std::endl;}
        break;
    }
    default:
        break;
    }
}

int main()
{
    func(0);
    func(1);
    return 0;
}

是否有任何体面的 c++ 编译器会尊重跳转,或者最终会出现选择退出的问题吗?

该代码似乎不是未定义行为。因此,不允许任何优化产生任何会影响代码行为的效果。

注意:与此种类 代码相关,您不能做的一件事是"goto" 过度定义局部变量。但是这段代码不会那样做,所以没问题。

另一个注意事项:如果您在 "real"(不是玩具、实验、混淆练习等)程序中有这种代码,您真的应该将其重构为不会引起太多 WTF 的东西来自任何阅读代码的人。