#include <stdio.h>
int main()
{
goto lb;
static int a=5;
lb:
goto b;
int b=6;
b:
printf("%d %d",a,b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我使用".c"文件扩展名保存此代码时,它运行良好,输出为5,后跟"垃圾"值.
但是,在C++中,它会导致错误.我无法理解为什么会有错误.你能告诉我怎么解决吗?
这与静力无关.您可以使用一小段代码重现您的问题,该代码根本没有static变量.
Run Code Online (Sandbox Code Playgroud)main.cpp: In function 'int main()': main.cpp:12:1: error: jump to label 'b' [-fpermissive] b: ^ main.cpp:9:10: error: from here [-fpermissive] goto b; ^ main.cpp:10:9: error: crosses initialization of 'int b' int b=6; ^
C++有针对goto初始化的跳跃规则; 这与它对类和对象的支持密切相关,这些类和对象通常比您在C中创建的对象复杂得多.
你应该阅读这篇文章.