Next: Statement Exprs, Previous: Local Labels, Up: Statements [Contents][Index]
In GNU C, you can get the address of a label defined in the current
function (or a local label defined in the containing function) with
the unary operator ‘&&’. The value has type void *
. This
value is a constant and can be used wherever a constant of that type
is valid. For example:
void *ptr;
…
ptr = &&foo;
To use these values requires a way to jump to one. This is done
with the computed goto statement5, goto *exp;
. For example,
goto *ptr;
Any expression of type void *
is allowed.
See goto Statement.
• Label Value Uses | Examples of using label values. | |
• Label Value Caveats | Limitations of label values. |
The analogous feature in Fortran is called an assigned goto, but that name seems inappropriate in C, since you can do more with label addresses than store them in special label variables.