Absender: Timo Sandmann
Datum: Do, 03.05.2007 16:59:10
In-reply-to:
<000101c78ced$19993fc0$fe78a8c0@mexpnew>
References:
<000101c78ced$19993fc0$fe78a8c0@mexpnew>
Hallo, Am 02.05.2007 um 21:07 schrieb Frank Menzel:
Die Sache mit den volatile-Variablen-ehrlich gesagt keine Ahnungwarum. Weil das so woanders wohl auch überall gemacht wurde. Aber da binich leider nicht der große C-Spezi-durch die ganze Bot-Materie bin ich aber auf dem Wege dahin :-)
nur kurz zur Information: Das Schlüsselwort "volatile" zwingt den Compiler dazu, vor *jedem* Lesezugriff auf eine Variable dessen Inhalt aus dem Speicher (RAM) zu holen und ihn nach *jedem* Schreibzugriff auch dorthin zurückzuschreiben. Das kann von Vorteil sein, wenn man sicherstellen möchte, dass ein Wert garantiert aktuell ist (weil er für den Compiler transparent geändert wurde, z.B. durch eine Interrupt Service Routine). Die Verwendung von volatile führt aber i.d.R. zu größerem Code und langsamerer Ausführung. Übrigens löst volatile das Problem auf einer 8 Bit-Architektur nur bei Variablen, die 8 Bit groß sind, vollständig. Laden und Speichern eines (u)int16 oder 32 kann trotzdem noch unterbrochen werden.
Gruß Timo