我找到了一些具有这种结构的C代码:
switch (n) {
do {
case 1:
// do some things
if (some condition)
goto go_on;
case 2:
// do some things
if (some condition)
goto go_on;
case 3:
// do some things
if (some condition)
goto go_on;
} while (1);
do {
case 4:
// do some things
if (some condition)
goto go_on;
case 5:
// do some things
if (some condition)
goto go_on;
} while (1);
}
go_on:
Run Code Online (Sandbox Code Playgroud)
我在C中编程多年(多年前)并且会认为这将是语法错误.我认为它与优化循环有关,但我想知道是否有人可以解释它的作用.while(1)到达时会发生什么,它是否有效地返回到交换机?特别是为什么有两个人在那里做什么呢?
顺便说一句,我不希望开始使用的讨论goto,或者如果这是糟糕的设计.我没有写这个,我假设作者这样做了,因为它使循环运行尽可能快.