1

重複の可能性:
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) ^

4

0 に答える 0