我正在编写一些C代码,在我的代码中有两个嵌套的循环。在特定条件下,我想要从内部循环中break
并continue
外部循环。我试图在外部循环的代码末尾使用标签,并在满足条件时goto
该标签来实现此目的。然而,gcc
会报错,说我不能在复合语句的末尾使用标签。为什么?
注1: 这不是一个switch
语句,关于那个问题已经在别处回答过了。
注2: 这不是一个关于风格的问题,也不是关于我是否应该使用goto
语句或条件变量的问题。
编辑: 人们要求提供一个示例,我可以举一个稍微简单的例子,检查一个数组是否是另一个数组的子数组。
int superArray[SUPER_SIZE] = {...}, subArray[SUB_SIZE] = {...};
int superIndex, subIndex;
for (superIndex=0; superIndex<SUPER_SIZE-SUB_SIZE; superIndex+=1)
{
for (subIndex=0; subIndex<SUB_SIZE; subIndex+=1)
if (superArray[superIndex+subIndex] != subArray[subIndex])
goto break_then_continue;
// code that executes if subArray is a sub array
break_then_continue:
}