Forum: Compiler & IDEs wo gehört das volatile hin?


von Micha (Gast)


Lesenswert?

ich hab heute, dank eines störrischen C-Projekts und Nachlesen hier im 
Forum, endlich den Unterschied zwischen Deklariern und Definieren einer 
Variablen begriffen. Hoffe ich zumindest ;)

Also im Header File deklariere ich die Variable (stelle sie allen 
interessierten Modulen vor), z.B. mit
1
extern uint8_t bla;

und (z.B.) im Hauptprogramm definiere ich sie, lege sie also konkret an, 
ggf. gleich mit Initialisierung:
1
uint8_t bla = 4;

Soweit sogut. Was mir jetzt nicht klar ist, und wo das Stöbern im Forum 
und im Web bei mir nur noch mehr Verwirrung gestiftet hat:
Wenn die Variable ausserhalb des normalen Programmflusses manipuliert 
wird, wo gehört dann das volatile hin - in die Deklaration, in die 
Definition oder in beides?

Vielen Dank schon mal für Antworten!

von Karl H. (kbuchegg)


Lesenswert?

Micha schrieb:

> wird, wo gehört dann das volatile hin - in die Deklaration, in die
> Definition oder in beides?

Beides.

von (prx) A. K. (prx)


Lesenswert?

In beides, da es zum Typ gehört.

von Adib (Gast)


Lesenswert?

1
extern volatile uint8_t bla;
2
volatile uint8_t bla = 4;
Die position vor bzr hinter dem uint8_t ist egal.

Und schau mal hier:
http://embeddedgurus.com/barr-code/2012/01/combining-cs-volatile-and-const-keywords/
http://embeddedgurus.com/barr-code/2009/03/coding-standard-rule-4-use-volatile-whenever-possible/#comment-67530
Adib.

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.