Was bedeutet VOLATILE

Gast #342726
Lesenswert?
• ▲
▼
Hallo Leute!

Ich beschäftige mich gerade mit C für µCer.
Ich habe mir ein Programm angesehen, welches Profis geschrieben haben.

Dort werden die globalen Variablen folgendermaßen definiert.

volatile int measurement_interval = 0;      /* measurement interval
over      */
volatile int mdisplay = 0;                  /* measurement display
requested  */
volatile int startflag = 0;

Was bedeutet dieses "volatile"?
Ich kenne nur static und extern.

Danke für eure Antwort.

Tschüss

Mario
Persönliche Seite #342727
Lesenswert?
• ▲
▼
Volatile heißt "flüchtig" und ist eine Anweisung an den Compiler,
keine Annahmen über den Inhalt der Variable zu treffen, weil sich der
quasi "unterm Arsch des Compilers" ändern kann.

Daher muss jeder Lesezugriff auf die Variable auch wirklich ein
Lesezugriff sein, ein -optimierendes- Zwischenspeichern in Registern
o.ä. ist damit explizit untersagt.

Ein Anwendungsfall sind beispielsweise Variablen, die in
Interruptroutinen verändert werden können.
Gast #342729
Lesenswert?
• ▲
▼
volatile sind die Variablen, die nicht nur durch das aktuelle Programm,
sondern auch durch andere Programme geändert werden. Wird des Öfteren
als Kunstgriff benutzt, um den Compiler die genannten Varablen nicht
wegoptimieren zu lassen.

mfG,
ejd
Gast #342730
Lesenswert?
• ▲
▼
Im übrigen ist volatile nicht uC spezifisch sondern allgemeiner C
Syntax, der auch Verwendung bei der Programmierung auf dem PC für
Threads oder Treiber findet. Leider bist du da nicht der einzige, der
volatile nicht kennt.
Persönliche Seite #342731
Lesenswert?
• ▲
▼
Ich für mich glaube aber, dass volatile so heißt, da der RAM Speicher ja
auch ein volatiler Speicher ist. Also ist das die Anweisung an den
Compiler diese Variable im volatilen Speicher der maschine/des
Mikroprozessors abzulegen. (Und das ist der RAM)..

(Ich denke mal, die haben da einfach nur nach einem passenden Begriff
gesucht, der möglichst viel mit der Funktion zu tun haben soll, oder?)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren