Die Schlüsselwörter const und volatile

In den Zeilen 9 bis 11 werden zwei neue Schlüsselwörter verwendet, die nicht zum ursprünglichen Sprachumfang nach der K&R Definition gehörten, aber Teil des ANSI-C Standards sind. Das Schlüsselwort const wird verwendet, um eine Konstante zu definieren. In Zeile 9 ist diese Konstante vom Typ int, ihr Name ist START und sie wird mit dem Wert 3 initialisiert. Der Compiler wird es Dir nicht gestatten, den Wert von START absichtlich oder unabsichtlich zu ändern, weil START als Konstante deklariert wurde. Gäbe es in Deinem Programm eine Variable STARTS, wäre es Dir nicht möglich, STARTS irrtümlich als START zu schreiben und zu verändern. Der Compiler würde einen Fehler ausgeben, aufgrunddessen Du den Fehler beheben könntest. Da es nicht erlaubt ist, den Wert einer Konstanten nachträglich zu ändern, ist es unbedingt notwendig, daß die Konstante mit einem sinnvollen Wert initialisiert wird.

Du hast sicher bemerkt, daß das Schlüsselwort const auch im Funktionskopf in Zeile 23 verwendet wird, um anzuzeigen, daß der formale Parameter Wert innerhalb der Funktion eine Konstante ist. Jeder Versuch, dieser Variable einen neuen Wert zuzuweisen führt zwangsläufig zu einem Compilationsfehler. Dies ist ein kleiner Schritt, um die Fähigkeit des Compilers, für Dich Fehler zu finden, zu verbessern.

Das Schlüsselwort volatile ist Teil des ANSI-C Standards, aber in der ursprünglichen K&R Definition nicht enthalten. Der Wert einer volatile Variable kann zwar durch die Programmiererin verändert werden, die Änderung kann allerdings auch von einer anderen Quelle ausgehen, wie zum Beispiel durch einen Interrupt Zeitgeber, der den Wert der Variable hochzählt. Um den Code optimieren zu können, muß dem Compiler bekannt sein, daß die Variable durch derartige andere Einflüsse verändert werden kann. Das Studium von Codeoptimierungsverfahren ist sehr interessant, führt aber weit über den Rahmen dieser Einführung hinaus. Beachte, daß auch eine Konstante volatile sein kann, was darauf hinausläuft, daß Du die Variable nicht ändern kannst, sehr wohl aber eine Hardware-Funktion.

Der Ausgabebefehl in Zeile 25 soll uns im Moment noch nicht interessieren. Ihm werden wir uns später in einiger Ausführlichkeit widmen. Wenn Du einige Erfahrung mit dem K&R Standard der Programmierung hast, wirst Du Dich möglicherweise an den Zeilen 5 und 23 etwas stoßen. Hier werden die Verwendung von Prototypen und die neuere Funktionsdefinition nach dem ANSI-C Standard illustriert. Die Verwendung von Prototypen ist in C nicht verbindlich vorgeschrieben (aber empfohlen), in C++ aber absolut unumgänglich. Aus diesem Grund widmet sich Kapitel 4 ausschließlich diesem Thema.

Es ist empfehlenswert, dieses Programm jetzt mit Deinem C++ Compiler zu kompilieren und laufen zu lassen, um zu sehen, ob Du dieselben Ergebnisse erhältst wie jene, die am Ende des Programmes in den Kommentaren stehen. Einer der Hauptgründe für das Kompilieren ist, festzustellen, ob Dein Compiler richtig geladen wird und läuft.

(weiter...)