de Ebomike tiene la respuesta para deshacerse de los errores. Ahora, la razón es,
a partir de documentos estándar 6.7.3,
Es posible transferir en un bloque, aunque no de una manera que no pasa por las declaraciones de inicialización. Un programa que salta 77) desde un punto donde una variable local con duración de almacenamiento automático no está en alcance hasta un punto donde está en el alcance está mal formado a menos que la variable tenga tipo trivial (3.9) y se declare sin inicializador (8.5).
Un ejemplo de la propia documentación estándar,
void f()
{
// ...
goto lx; // ill-formed: jump into scope of a
// ...
ly:
X a = 1;
// ...
lx:
goto ly; // OK, jump implies destructor
// call for a followed by construction
// again immediately following label ly
}
en que se forma mal la declaración goto lx;
porque está siendo saltó a la declaración lx
, donde el alcance de a
es visible.
También,
77) La transferencia de la condición de una sentencia switch para una etiqueta caso se considera un salto en este respecto.
Por lo tanto, esto también se aplica a switch
.
Y si se colocan llaves {}
, el alcance está limitado a las llaves y usted es libre de declarar dentro de cada declaración case
.
Espero que ayude ..
bienvenida a desbordamiento de pila ... por favor utilice el botón de formato "código" en la barra de herramientas (que tiene este aspecto: 101010") para dar formato al código en el futuro –
relacionados.: http://stackoverflow.com/questions/2351936/create-an-object-in-switch-case http://stackoverflow.com/questions/449736/why-cant-variables-be-declared-in-a-switch -statement http://stackoverflow.com/questions/1231198/declaring-variables-inside-a-switch-statement http://stackoverflow.com/questions/2036819/compile-error-with-switch-expected-expression-before http://stackoverflow.com/questions/1115304/can-i-declare-variables-inside-an-objective-c-switch-statement http: // stackoverflow.com/questions/4068909/odd-compiler-error-when-using-obj-c-objects-in-a-switch-statement –