EboMike a la réponse à se débarrasser des erreurs. Maintenant, la raison en est,
à partir des documents standard 6.7.3,
Il est possible de transférer dans un bloc, mais pas d'une manière qui contourne les déclarations d'initialisation. Un programme qui saute77) à partir d'un point où une variable locale avec une durée de stockage automatique n'est pas comprise dans un champ est mal formée sauf si la variable est de type trivial (3.9) et est déclarée sans initialiseur (8.5).
Un exemple de la documentation standard lui-même,
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
}
dans lequel la déclaration goto lx;
est mal formé car il est sauté à la déclaration lx
, où la portée de a
est visible.
En outre,
77) Le transfert de l'état d'une instruction switch pour une étiquette de cas est considéré comme un saut à cet égard.
Cela s'applique également à switch
.
Et si les accolades {}
sont ajoutées, la portée est limitée aux accolades et vous êtes libre de déclarer dans chaque instruction case
.
espoir qui aide ..
bienvenue à débordement de la pile ... s'il vous plaît utiliser la mise en forme « code » bouton de la barre d'outils (il ressemble à ceci: 101010") pour formater votre code à l'avenir –
connexes.: 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/impair-compilateur-erreur-lors de l'utilisation-obj-c-objets-dans-une-switch-instruction –