Forum: Mikrocontroller und Digitale Elektronik "volatile" Argumente der Funktion erneut definieren?


von brechbunkt (Gast)


Lesenswert?

Eine Verständnisfrage:

Ich habe einen Zeiger, der auf eine Adresse zeigt, die auf jedem Fall 
bei jedem Zugriff neu gelesen werden soll. Drum wird er natürlich 
"volatile" definiert. Nun möchte ich diese Adresse einer Funktion 
übergeben.

Ist es nun eigentlich zwingend erforderlich auch die Parameter der 
Funktion als "volatile" zu definieren (obwohl sie dem Compiler bereits 
als "volatile" bekannt ist)?

1
volatile int *volatAddress;
2
3
void func(int *address)
4
{
5
    // blablabla
6
}

von Fritz (Gast)


Lesenswert?

Ja. Woher soll die Funktion (die in einer ganz anderen 
Übersetzungeeinheit stecken kann) denn sonst davon wissen?

von Rolf Magnus (Gast)


Lesenswert?

brechbunkt schrieb:
> Ist es nun eigentlich zwingend erforderlich auch die Parameter der
> Funktion als "volatile" zu definieren (obwohl sie dem Compiler bereits
> als "volatile" bekannt ist)?

Natürlich. Was bringt es denn, wenn der Compiler beim Aufruf weiß, daß 
das Zeigerziel volatile ist? Deshalb verändert sich ja die Funktion 
selbst nicht auf einmal.
Übrigens sollte der Compiler bei deinem Beispiel auch warnen, daß das 
volatile beim Aufruf verlorengeht.

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.