Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verständnisfrage zu volatile

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.07.2006, 12:19 Uhr
Yadgar



High!

Tagsüber büffeln, abends kreativ proggen, so läuft es im Moment bei mir... bei der Hitze ist ersteres nicht unbedingt das reine Vergnügen. Trotzdem habe ich mich an ein neues Kapitel des "Aupperle" gemacht, und zwar an das über Konstanten und volatile Objekte. Dort findet sich eine Übung mit der Frage:

<b>Was kann man über die Ausdrücke

a) bool b = i == i;

b) i++;

c) while ( !i );

sagen, wenn i volatile (bzw. nicht volatile) deklariert ist? </b>

Meine Antwort:

a) nicht volatil: b ist auf jeden Fall true.
volatil: b ist nicht eindeutig definiert, da nach der Auswertung des linken, aber noch vor der des rechten i ein anderer Wert zugewiesen werden kann, wodurch i == i false werden würde.

b) nicht volatil: i wird um 1 erhöht
volatil: i kann zwischen seiner Erstauswertung und der Inkrementierung um 1 einen völlig neuen Wert bekommen, ist folglich anschließend nicht zwingend um 1 erhöht.

c) nicht volatil: Schleife wird solange durchlaufen, wie i den Wert 0 hat
volatil: externe Neuzuweisung kann zum Abbruch der Schleife führen

Habe ich das Konzept "volatile" richtig verstanden? Was gibt es eigentlich außer der Berücksichtigung externer Zugriffe bei der Programmierung von Hardware-Schnittstellen sonst noch an praktischen Anwendungen für volatile?

Bis bald im Khyberspace!

Yadgar

Programmier-Blog: http://home.arcor.de/yadgar/khyberspace/comput-d.html
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.07.2006, 12:54 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Yadgar:

Habe ich das Konzept "volatile" richtig verstanden? Was gibt es eigentlich außer der Berücksichtigung externer Zugriffe bei der Programmierung von Hardware-Schnittstellen sonst noch an praktischen Anwendungen für volatile?


Im wesentlichen scheinst Du es verstanden zu haben. Im prinzip ist volatile eigentlich nur die Anweisung, zugriffe auf die Variable nicht zu optimieren.

Neben Hardwarezugriffen taucht volatile Häufig noch bei Programmen mit mehreren Threads sowie bei Signalhandlern auf. Zu volatile habe ich mal was geschrieben; das dort diskutierte Beispiel geht von einem gcc Compiler auf Linux aus; denn die durch volatile Hervorgerufenen Effekte sind enorm Platformabhängig.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: