Escribo un código C y en mi código tengo dos bucles anidados. En una condición particular quiero break
fuera del lazo interno y continue
el lazo externo. Traté de lograr esto usando una etiqueta al final en el código del lazo externo y, con la condición, esa etiqueta con el goto
. Sin embargo, gcc
da un error que no puedo tener una etiqueta al final de una declaración compuesta. Por qué no?En C, ¿por qué necesita una declaración después de una etiqueta goto?
Nota 1: Esta no es una declaración switch
y que pregunta ha sido contestada elsewhere.
Nota 2: Esta no es una pregunta sobre el estilo y si debería o no debería estar usando declaraciones goto
o variables condicionales en su lugar.
EDIT: La gente ha pedido un ejemplo y que pueden dar un ejemplo un poco fácil de comprobar si una matriz es un subconjunto de otro conjunto
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:
}
¿Puede dar un pequeño programa que reproduce el mensaje de error que se obtiene? – sarnold
buena suerte y cuidado con velociraptors – wim