I am writing some C code and in my code I have two nested loops. On a particular condition I want to break
out of the inner loop and continue
the outer loop. I tried to achieve this using a label at the end on the outer loop's code and, on the condition, goto
that label. However gcc
gives an error that I cannot have a label at the end of a compound statement. Why not?
Note 1: This is not a switch
statement and that question has been answered elsewhere.
Note 2: This is not a question about style and whether I should or should not be using goto
statements or conditional variables instead.
EDIT: People have asked for an example and I can give a slightly facile example of checking if an array is a subarray of another array
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:
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…