Я пишу некоторый код на 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:
}