你能给这篇文章投赞成票吗?因为其他人都有兴趣回答和评论它?喜欢奉献的人显然不知道如何取消奉献或支持一个帖子
我试图在我的项目中使用标签,但当我使用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初始化这两种情况下你都在跳过一些东西。
有没有什么解决方案,比如禁用设置中的某些内容
我不想在使用标签时先声明变量,然后初始化它们。
我认为这不应该在所有上引发错误
编译器可以自由拒绝编译格式错误的程序。
这个有什么解决方案吗
解决方案:
- 不要初始化
a
- 在跳转之前声明
a
- 在标签后面声明
a
- 不要使用
goto
(我最喜欢的( - 通过在标签之前结束的块语句中声明
a
来限制其范围