我有以下代码:
do
{
doStuffP1();
if (test)
{ goto skip_increment;
}
dostuffP2();
skip_increment:
// 1; // Only works if I remove the comment at line start.
} while (loop);
Run Code Online (Sandbox Code Playgroud)
哪个不编译(VC++ 2010)有这个错误:
file_system_helpers.cpp(109) : error C2143: syntax error : missing ';' before '}'
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为:
skip_increment:
1;
Run Code Online (Sandbox Code Playgroud)
它编译(并且有效).
这真的是C++语法的限制吗?
我假设"1;" 应该是你的第一个代码片段中缺少的?
请看这里的语法:http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
这仅将标签定义为"标签声明".也就是说,块体可以包含label: <statement>其内容序列中的任何位置,但标签后面的语句不是可选的.所以这会使skip_increment: }无效.
(而且,好吧,你使用的是C++,而不是C;但是我怀疑是否允许额外使用goto是在定义C++语言时有人关心的事情.)
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |