转到产生错误"bypassing initialization"



你能给这篇文章投赞成票吗?因为其他人都有兴趣回答和评论它?喜欢奉献的人显然不知道如何取消奉献或支持一个帖子

我试图在我的项目中使用标签,但当我使用goto跳过一组指令将控制转移到代码的另一部分时,我会得到这样的错误:转移控制绕过(某些变量(的初始化

这是产生错误的代码:

goto label1;
label00:
int a = 0;//the compiler can't let me skip this line
int b; // but this line is fine to skip over
b = 0; //because i initialize it here instead of doing it like the a variable
label1:
//other instructions

正如你所看到的,我初始化了两个变量,但其中一个是定义的,然后初始化,但另一个是在同一行定义和初始化的。

变量a的同一行定义和初始化的变量在跳过时不会产生错误,但另一个会产生错误。

我正在使用VS2019来编译此代码。我认为这根本不应该引发错误,编译器应该给你一个警告,这样你就知道在a和b初始化这两种情况下你都在跳过一些东西。

有没有什么解决方案,比如禁用设置中的某些内容

我不想在使用标签时先声明变量,然后初始化它们。

我认为这不应该在所有上引发错误

编译器可以自由拒绝编译格式错误的程序。

这个有什么解决方案吗

解决方案:

  1. 不要初始化a
  2. 在跳转之前声明a
  3. 在标签后面声明a
  4. 不要使用goto(我最喜欢的(
  5. 通过在标签之前结束的块语句中声明a来限制其范围

相关内容

  • 没有找到相关文章

最新更新