Inhaltsverzeichnis

volatile

'volatile' ist eine Typ-Attribut und wir im Zusammenhang mit Variablen verwendet.

Syntax

Man schreibt es in einer Variablendeklaration vor den Datentyp, also zum Beispiel so:

volatile int x;

Verwendung

Es dient dazu dem Compiler zu sagen, dass er keine Optimierung beim Zugriff und der Speicherposition machen darf. Sonst könnte der Compiler die Variable als Optimierung an eine andere Speicheradresse verschieben oder wenn sich der Wert im Programmfluss eigentlich nicht ändern kann auch einen zwischengespeicherten Wert verwenden. Das kann aber bei sehr hardwarenaher Programmierung manchmal zu Problemen führen, da Variablen auch für Memorymapped Input u. Output verwendet werden und deshalb sich auch für den Compiler unerwartet ändern können.

Beispiel

Schauen wir uns einmal den folgenden Code an:

volatile int x;
x = 1;
if( x == 1 )
{
  /* ... */

Ohne 'volatile' wäre es sehr wahrscheinlich, dass der Compiler das 'if' wegoptimieren würde. Wenn sich der Wert von 'x' aber zwischen der Zuweisung zum Beispiel durch einen Interrupt ändert, dann würde das das Programm auf Grund der Optimierung nicht erkennen und deshalb wahrscheinlich auch nicht korrekt arbeiten. Mit der Verwendung von 'volatile' können wir das verhindern und somit kann das Programm auch wie gewünscht arbeiten.


Diskussion