11.10 Typ-Qualifizierer
 
Außer der Speicherklasse, die Sie für eine Variable festlegen können, können Sie auch den Typ eines Objekts näher spezifizieren.
11.10.1 volatile
 
Mit dem Schlüsselwort volatile modifizieren Sie eine Variable so, dass der Wert dieser Variablen vor jedem Zugriff neu aus dem Hauptspeicher eingelesen werden muss.
Meistens wird volatile bei der Treiberprogrammierung eingesetzt. Hier ein Beispiel, bei dem ein Programm diejenigen Ergebnisse in einer Schleife überprüft, die ins Register der CPU abgelegt wurden:
do {
printf("Gerät X wird überprüft ...\n");
} while(reg & (STATUS_A|STATUS_B) == 0);
printf("Gerät X Status ... [OK]\n");
Manche Compiler erkennen jetzt an der while-Schleife, dass hier immer auf die gleiche Adresse überprüft wird, und optimieren die do while-Schleife einfach weg. Dieser Vorgang wird dann nur einmal durchgeführt, da die Schleife weg ist. Wird dabei die Hardware nicht erkannt, entsteht ein Problem. Somit gilt für Variablen, die mit volatile deklariert sind, dass diese ohne jede Optimierung neu aus dem Hauptspeicher geladen und neue Werte auch sofort wieder dort abgelegt werden.
11.10.2 const
 
Mit diesem Typ-Qualifizierer definieren Sie eine Konstante. Dies ist eine Variable, deren Wert im Laufe der Programmausführung nicht mehr geändert werden darf.
const int wert = 10;
wert += 5; /* Fehler */
|