Sto scrivendo un codice C e nel mio codice ho due cicli annidati. Su una condizione particolare voglio break
dal ciclo interno e continue
il ciclo esterno. Ho cercato di ottenere ciò utilizzando un'etichetta all'estremità del codice del ciclo esterno e, a condizione, l'etichetta goto
. Comunque gcc
dà un errore che non posso avere un'etichetta alla fine di un'istruzione composta. Perchè no?In C perché hai bisogno di una dichiarazione dopo un'etichetta goto?
Nota 1: Questa non è una dichiarazione switch
e che domanda è stato risposto elsewhere.
Nota 2: Questa non è una domanda sullo stile e se dovrei o non dovrei usare le dichiarazioni goto
o variabili condizionali.
EDIT: Le persone hanno chiesto un esempio e posso fare un esempio un po 'facile di verificare se un array è un sottoarray di un altro 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:
}
può fornire un piccolo programma che riproduce il messaggio di errore che si ottiene? – sarnold
buona fortuna e attenzione ai velociraptor – wim