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
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.
Guck mal oben rechts in der Forenuebersicht, da ist ein Eingabefeld "Im Betreff suchen". Dort tippst du "volatile" ein und drueckst <enter>. Der Rest ergibt sich dann... gruss, bjoern.
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
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.
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?)
Nein, das ist zwar schön, daß Du das glaubst, aber das würde im Umkehrschluss implizieren, daß beispielsweise "static" irgendwo anders als im RAM abgelegt werden müsste ... Diese "Eselsbrücke" ist daher hochgradig einsturzgefährdet. Als C entwickelt wurde, war von Microcontrollern oder auch nur Microcomputern noch lange nicht die Rede.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.