C: was ist ´volatile´

Hi,

weil das so exotisch sei, verweigert mein C-Buch Auskunft über das Attribut ´volatile´. In Web-Tutorials habe ich auch nix gefunden.

Kann mir jemand eine kurze Erläuterung oder einen Link geben?

Danke!

Ich hoffe, daß ich jetzt nichts verwechsle: Wenn man eine Funktion mit lokalen Variablen verläßt, zerstören sich auch diese lokalen Variablen. Als volatile-Variable wird diese Zerstörung verhindert.

Ist aber ohne Gewähr. Ich prüfs noch mal nach.

Ich glaube, was Du meintest, waren static-Variablen. Ich weiß jedoch, was volatile bewirkt:

An volatile-Variablen werden keine Optimierungen ausgeführt, da der Compiler annimmt, daß sich der Inhalt jederzeit ändern kann, z. B. durch andere Programme oder (Hardware-)Interrupts.

–Mathias Ricken

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich Trottel… Du hast natürlich recht.
Ich wußte doch, daß ich was verwechsle.

Ich Trottel… Du hast natürlich recht.
Ich wußte doch, daß ich was verwechsle.

War mir ein Vergnügen, Dich zurechtzuweisen :wink:

–Mathias

Hi Deddi :wink:

Es scheint ja doch ein bisschen Verwirrung um „volatile“ zu geben. Dabei ist es ganz einfach, es ist das Gegenteil von „register“!

Zur Optimierung von Rechenprozessen versucht der Compiler, so viele Werte wie moeglich in den Prozessor-Registern zu halten. Das kann unter Umstaenden in die Hose gehen, weil sich Speicherinhalte auch ohne Wissen des Compilers aendern koennen (z.B. Timer). Mit „volatile“ wird der Compiler angewiesen, einen Code zu erzeugen, der jedesmal bei Benutzung der volatile-Variablen direkt auf die Speicheradresse zugreift und diese niemals in einem Prozessor-Register haelt …

cu Stefan.