There are three kinds of labels: identifier, case, and default.
A
label name must be unique within the function in which it appears.
In C++, an identifier
label may only be used as the target of a goto statement.
A goto statement can use a label before its definition.
Identifier labels have their own namespace; you do not have to worry
about identifier labels conflicting with other identifiers. However,
you may not redeclare a label within a function.
Case and default label statements only appear in switch statements. These labels are accessible only within the closest enclosing switch statement.
comment_complete : ; /* null statement label */ test_for_null : if (NULL == pointer)