Ein Label besteht aus einem eindeutigen Namen und einem Doppelpunkt : und kennzeichnet irgendwo im lauffähigen Code eine Stelle, an die gesprungen werden kann. Man nennt ein Label deswegen auch eine Sprungadresse.
#include <stdio.h>
int main(){
goto End_of_Program;
printf("This part is overjumped.\n");
End_of_Program:
printf("End of program.\n");
return 0;
}
Labels werden vom Compiler zuerst in ein neues, eindeutiges Assembler-Label und danach in eine Adresse umgewandelt, welche für den Prozessor die Position der nächsten auszuführenden Instruktion angibt. Kontrollstrukturen wie for-Schleifen oder if-else-Blöcke werden vom Compiler ebenfalls mittels Labels umgesetzt, indem künstliche Sprungadressen in den Assembler-Code eingefügt werden und aufgrund von Auswertungen auf Prozessor-Ebene an dieselben verzweigt wird. Folgendes Beispiel zeigt einen Ausschnitt aus den vom Compiler hergestellten (und nicht optimierten) Assembler-Befehlen für eine if-else-Entscheidung:
Hier wurden die beiden Labels L2 und L4 eingefügt. L2 entspricht dabei der Sprungadresse, welche angesprungen wird, wenn i ungleich (jne) Eins ist, und L4 entspricht dem Ende des If-Blocks, zu welchem am Ende des true-Teiles gesprungen (jmp) werden muss.
Spezielle Labels
Es gibt einige Labels, oder Keywords, denen eine spezielle Bedeutung zukommt:
case X:
Dieses Label kennzeichnet einen explizit ausprogrammierten Teil einer switch-Struktur zu welchem gesprungen wird, wenn die Bedingung der switch-Anweisung den Wert X ergibt. Ausserhalb der zugehörigen switch-Struktur hat dieses Label keine Gültigkeit.
default:
Dies ist das Label einer switch-Struktur, welche den Teil markiert, welcher aufgerufen wird, wenn alle anderen Teile nicht zutreffen. Ausserhalb der zugehörigen switch-Struktur hat dieses Label keine Gültigkeit.
public: protected: private:
Diese Keywords sehen zwar aus wie Labels, sind es jedoch nicht. Der Compiler benutzt diese Angaben in C++, um die verschiedenen Zugriffsberechtigungen innerhalb von Klassen festzulegen. Diese Labels können an den vorgesehenen Positionen in beliebiger Reihenfolge und auch mehrfach auftreten.