Forum: Compiler & IDEs volatile


von Milchknilch (Gast)


Lesenswert?

Was genau passiert wenn ich eine variable mit volatile ausserhalb einer 
funktion definiere?

Konkret:

volatile unsigned char lcd_menue_control;  <--Steht  ausserhalb von 
main()

lcd_menue_control wird inerhalb eines Interrupts verändert. Danach kann 
ich in Main die Veränderung feststellen, aber in einer von main() 
aufgerufenen Funktion ist die Änderung wieder weg???

heisst volatile nicht soviel wie global?

von Matthias (Gast)


Lesenswert?

Hi

volatile bedeutet das compiler nicht an dieser Variable herumoptimieren 
soll.
Der Compiler könnte z.B. bei

char i=4;
while(i);

die while-Schleife wegoptimieren. Deklarierst du die Variable i aber 
volatile sagst du damit dem Compiler die Variable kann sich aus aus ihm 
nicht ersichtlichen Gründen (INT, Timer usw.) ändern und dann verzichtet 
er auf obige optimierungen. Ohne deinen Sourcecode zu kennen kann ich 
dir aber auch nicht genauer helfen.

Matthias

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
Noch kein Account? Hier anmelden.