Wikipedia · einfach zusammengefasst · Stand
Flag (Informatik)
Aus der englischen Sprache findet sich in der Programmierung für synchronisierende Statusvariablen auch der Begriff (binäre) Semaphore bzw. Mutex locks.
Inhalt5 Abschnitte
Begriff und Grundprinzip
Ein Flag (deutsch etwa „Markierung“, in speicherprogrammierbaren Steuerungen auch „Merker“) ist ein Statusindikator, der bestimmte Zustände kennzeichnet. Es kann gesetzt, gelöscht oder geprüft werden. Meist unterscheidet es nur die beiden Zustände „ist gesetzt“ und „ist nicht gesetzt“.
Zur technischen Darstellung dienen häufig die binären Werte 0 und 1, verständliche Bezeichnungen wie „Gesetzt“ und „Nicht gesetzt“ oder eine Boolesche Variable. Ein Flag ist jedoch nicht völlig mit einer Booleschen Variable gleichzusetzen: Die Variable ist auch dann vorhanden und deklariert, wenn sie den Wert „falsch“ hat; ein nicht gesetztes Flag wird dagegen im Sinne von „gar nicht da“ verstanden.
Abgrenzung und verwandte Konzepte
Wenn mehr als zwei Zustände beschrieben werden müssen, verwendet man einen Aufzählungstyp oder spricht in der Programmierung von einer Statusvariable beziehungsweise Statuskonstante statt von einem Flag.
Ist ein Flag nur einmal zu setzen und darf anschließend nicht mehr gelöscht werden, ähnelt es einem Symbol. Für synchronisierende Statusvariablen kommen außerdem die Begriffe „(binäre) Semaphore“ und „Mutex locks“ vor.
Verwendung im Prozessor und in Programmen
In einem Prozessor zeigen Flags Ergebnisse oder besondere Zustände von Operationen an. Bei arithmetischen Berechnungen kennzeichnet beispielsweise das Carry-Flag einen Übertrag und das Overflow-Flag einen Überlauf. Solche Informationen befinden sich im Statusregister.
In Programmen können Flags eine Fehlerbedingung von einem Programmsegment an ein anderes übermitteln oder Nutzerrechte abbilden. Das konkrete Datenformat hängt von der jeweiligen Implementierung und Programmiersprache ab.
Bedingte Kompilierung
Präprozessor-Flags sind Merker, mit denen nur ausgewählte Teile eines Quellcodes kompiliert werden. Dieses Verfahren ist besonders in C und C++ gebräuchlich.
Im Beispiel wird mit #define COMPILE_FLAG ein Flag definiert. #ifdef COMPILE_FLAG prüft, ob es vorhanden ist. Ist es definiert, fließt Code-Block 1 in das Programm ein; andernfalls wählt #else Code-Block 2. #endif beendet die bedingte Auswahl.
Flags bei der Datenübertragung
Bei der Datenübertragung können bestimmte Bitmuster Zustände oder Signaleigenschaften kennzeichnen. Dadurch sind keine eigenen Leitungen für jedes Signal erforderlich. Solche Bitmuster heißen Zustands-Flags.
Eine Datenpräambel signalisiert insbesondere den Beginn einer Übertragung und ermöglicht dem Empfänger die Synchronisierung. Auch Start- und Stoppbits dienen der Steuerung einer Übertragung. Durch eine geeignete Kodierung lassen sich Bitmuster festlegen, die im eigentlichen Nutzdatenstrom nicht vorkommen können. Diese Muster können dann als Steuersignale statt zur Fehlererkennung oder Fehlerkorrektur verwendet werden.