ローカルに宣言されたラベル、すなわちローカル・ラベル は、ステートメント式の先頭で宣言され、スコープがそのラベルが宣言され定義されているステートメント式である identifier ラベルです。この言語フィーチャーは C および C++ に対する直交拡張で、GNU C で開発されたプログラムの処理 を容易にします。
ローカル・ラベルは、goto 文のターゲットとして使 用することができ、そのラベルが宣言されている ブロックと同じブロック内 からそのターゲットにジャンプすることができます。この言語拡張は、ネストされたループを含むマクロを 作成する場合に特に役立ち、そのステートメント・スコープと通常のラベルの関数スコープとの違いを利用します。
構文は以下のとおりです。
.-,----------. V | >>-__label__----identifier-+--;--------------------------------><
ステートメント式において、ローカル・ラベルの宣言は、左括弧および左中括弧の 直後で、通常の宣言およびステートメントよりも前でなければなりません。 ラベルは、ステートメント式のステートメント内で、名前とコロンを使用した一般的な方法で定義されます。
関連参照