En C++ esta permitido saltar sobre definiciones.
Pero esta prohibido saltar las declaraciones con inicializaciones.
Ejemplo:
cada case de un switch es una etiqueta, y la variable es visible dentro de todo el switch, en el case actual y los siguientes.
Dado que la ejecucion del switch es un salto a cada etiqueta, al poner una definicion con inicializacion, se da el caso que esta prohibido, por ello el error de compilacion.
Código (cpp) [Seleccionar]
{
// algunas instrucciones antes ...
goto etiqueta; // salto incondicional a donde este' la etiqueta
int x; // permitido saltarse esto
// mas instrucciones ...
etiqueta:
x = 1; // pero a pesar del salto la variable x existe aqui, con valor inicial desconocido.
}
Pero esta prohibido saltar las declaraciones con inicializaciones.
Ejemplo:
Código (cpp) [Seleccionar]
{
// algunas instrucciones antes ...
goto etiqueta; // salto incondicional
int x = 3; // no esta permitido saltarse esto
// mas instrucciones ...
etiqueta:
// no se puede saltar aqui
}
cada case de un switch es una etiqueta, y la variable es visible dentro de todo el switch, en el case actual y los siguientes.
Dado que la ejecucion del switch es un salto a cada etiqueta, al poner una definicion con inicializacion, se da el caso que esta prohibido, por ello el error de compilacion.