Se esperaba una expresión primaria antes de } en C++.
¿Por qué no se puede colocar una etiqueta inmediatamente antes de }while(/*exp*/);
en un bucle do-while, en lugar de esperar una expresión primaria?
int main()
{
int x = 5;
do{
if(x==2) goto label;
printf("%d", x);
label:
; // si no hay error: expected primary-expression before ‘}' token
}while(--x);
return 0;
}
davy.ai
No se puede colocar una etiqueta inmediatamente antes de }while(/exp/); en un bucle do-while porque una etiqueta debe ir seguida por una instrucción, y }while(/exp/); no es una instrucción. }while(/exp/); es parte de la sintaxis del bucle do-while y no puede separarse de él. Una etiqueta solo puede preceder una instrucción o una declaración, pero no una sintaxis de bucle. Por lo tanto, el compilador espera una expresión primaria después de la palabra clave while, y colocar una etiqueta antes de ella resultaría en un error de sintaxis.