'identifier' の初期化が 'default' ラベルによってスキップされています
switch
ステートメントでは、identifier
の初期化がスキップできます。 宣言がブロックで囲まれている場合を除き、初期化子を使用して宣言をスキップすることはできません。 (ブロック内で宣言されていない限り、変数は switch
ステートメントの最後までスコープ内にあります)。
次の例では C2361 が生成されます。
// C2361.cpp
void func( void ) {
int x;
switch (x) {
case 0 :
int i = 1;
{ int j = 1; }
default : // C2361 error
int k = 1;
}
}
考えられる解決方法:
// C2361b.cpp
// compile with: /c
void func( void ) {
int x = 0;
switch (x) {
case 0 :
{ int j = 1; int i = 1;}
default :
int k = 1;
}
}