5

私の環境は、Windows XP SP3 + 'Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 14.00.50727.762 for 80x86' です。プロセスは次のとおりです。

F:\workshop\vc8proj\console> タイプ tc

int main(void) {

    // Do some thing.
    {
        int i;
        {
            i = 3;
            goto abc111;
        }

        abc111:
    }
    return 0;
}

F:\workshop\vc8proj\console> cl /MD tc Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 14.00.50727.762 for 80x86

Copyright (C) Microsoft Corporation. 全著作権所有。

tc tc(10): エラー C2143: 構文エラー: ';' がありません 前 '}'

F:\workshop\vc8proj\console>vim tc

F:\workshop\vc8proj\console>type tc

int main(void) {
    // Do some thing.
    {
        int i;
        {
            i = 3;
            goto abc111;
        }

        abc111: 5201314;
    }
    return 0;
}

F:\workshop\vc8proj\console> cl /MD tc Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 14.00.50727.762 for 80x86

Copyright (C) Microsoft Corporation. 全著作権所有。

tc Microsoft (R) Incremental Linker バージョン 8.00.50727.762 Copyright (C) Microsoft Corporation. 全著作権所有。

/out:t.exe t.obj

F:\workshop\vc8proj\console>

Linuxオペレーティングシステムでも同じ状況ですか???

4

2 に答える 2

11

言語機能です。ラベルは、ラベル付けされたステートメントの一部にしかなれず、ステートメントには終端が必要;です。ラベルの後ろにセミコロンを置くだけで十分です。

int main(void) {

    // Do some thing.
    {
        int i;
        {
            i = 3;
            goto abc111;
        }

        abc111: ;

    }
    return 0;
}

も動作します。

于 2012-06-20T09:48:04.243 に答える
1

まあ、それは言語機能です。ラベルに言及したステートメントがあることは必須です。

ラベルの後にステートメントがない場合は、';' を挿入します。ステートメントを終了するか、ラベルの後にのみ return ステートメントを記述できます。

于 2012-06-20T10:38:05.387 に答える