跳转到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++编译器会尊重这种跳跃,或者最终选择退出会有一些问题?
代码似乎不是Undefined Behavior。因此,任何优化都不允许产生任何会影响代码行为的效果。
注意:与这种类型的代码相关,有一件事是不允许您对局部变量的定义进行"goto"。但这段代码不能做到这一点,所以没问题。
另一个注意事项是:如果你在一个"真实"(而不是玩具、实验、混淆练习等(程序中有这种代码,你真的应该把它重构成一个不会从任何阅读代码的人那里引发太多WTF的东西。
相关文章:
- 我似乎对if/else的基本语句有问题:/
- 我在范围内未声明的错误类有问题
- 我的C++语言蛮力算法有问题
- 我关于函数"Assert"的C++代码有问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++类中的友元函数有问题?
- 我对数组即 0x6dfe78 有问题
- 我对 std::unique(算法)C++有问题
- 使用 fstream 库并在屏幕上打印的文件有问题?
- 这个模板为什么有问题?如何正确编译
- 我对 MyGraph 属性顶点名称和边权重有问题
- delete[]有问题,如何部分删除内存
- 在C++中使用exit()退出程序有问题吗
- 跳转到if(false)块有问题吗
- 查找有问题的宏
- 使用 rand() 和 srand() 有问题
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 我在 C++ "out_of_range at memory location"有问题
- 我在 c++ 中的 AES 代码有问题。明文正在更改,但加密邮件是相同的。我找不到我的错误
- 标头中的模板规范有问题