重複の可能性:
switch ステートメントで変数を宣言できないのはなぜですか?
次の例のように、C では変数の初期化を jump ステートメントでスキップできることがわかりました。
/* valid in C but not C++ */
int main()
{
switch (1)
{
case 0:
int foo = 0;
break;
case 1:
++foo;
}
return 0;
}
しかし、Comeau コンパイラでコンパイルしようとすると、エラーが発生します。
"ComeauTest.c"、8 行目: エラー: 宣言にラベルを付けることはできません int foo = 0; ^
"ComeauTest.c", 5 行目: 警告: 制御の転送は次の初期化をバイパスします: 変数 "foo" (8 行目で宣言) switch (1) ^