代替写作
while()
{
lbl:
}
你必须写
while()
{
lbl:;
}
为什么?这对我来说没有任何意义。即使在循环中有实际的代码也是如此
答案 0 :(得分:0)
如果您使用C进行编码,因为C11标准对此进行了定义。通过阅读n1570,第6.8.1节进行检查。顺便说一句,C的其他标准也有类似的规则。
如果您使用C ++进行编码,则因为C ++ 11标准对此进行了定义。通过阅读n3337,第6.1节进行检查。顺便说一句,C ++的其他标准也有类似的规则。
直觉上,标签与 statement 有关,并且右花括号不是语句(而是块终止符)。分号(单独使用时)将结束一个空(或null)语句。
如果您对该规则不满意,请随意使用其他编程语言或定义自己的编程语言(并可能通过compiling it到C来实现)。也许您可以研究Scheme(先读SICP,然后再读R5RS)及其call/cc原语(与普通goto
相比,是另一种更强大的控制原语)
您也可以游说C ++(或C)标准委员会来更改规则。实际上,这需要享誉全球并需要多年的全职工作(否则,他们不会认真考虑您的建议)。在编写更改C ++标准的建议之前,请务必学习得很好,并提供您的想法的示例实现。
许多C ++实现都是free software(例如GCC或Clang)。您可以研究它们并加以改进(至少在您的fork中;但是请务必遵守他们的open-source license)。但是,有很多代码段(源代码有数百万行),因此您将需要数年才能理解它们。