一般来说,c/c++中,goto语句后面不允许进行变量初始化,如下的代码:
// ......
goto SHENGXI:
int a = 0;
//..........
SHENGXI:
//......
这个是有编译错误的,编译器为了防止程序后面会引用未定义的变量来使用。但由于变量声明和定义的就近原则,这个会很不方便。利用{}的真实含义:开启一个新的浮动栈,此时可以自由声明:
// ......
goto SHENGXI:
{
int a = 0;
//..........
}
SHENGXI:
//......
2 goto的标签语句后不允许直接接大括号,否则编译器会报错:
如
goto SHENGXI:
{
// .....
SHENGXI:
}
不可以,而
goto SHENGXI:
{
//.....
SHENGXI:
return;
}可以

746

被折叠的 条评论
为什么被折叠?



