When the GCC extensions setting is on, the compiler allows labels limited to a block's scope. A label declared with the __label__ keyword is visible only within the scope of its enclosing block. Example of using local labels shows an example.
void f(int i)
{
if (i >= 0)
{
__label__ again; /* First again. */
if (--i > 0)
goto again; /* Jumps to first again. */
}
else
{
__label__ again; /* Second again. */
if (++i < 0)
goto again; /* Jumps to second again. */
}
}