Ich hab beim googlen folgendes gefunden:
http://de.wikibooks.org/wiki/C-Progr...g:_static_&_Co.
Gruß,
SIGINT
Hallo Zusammen!
Ich habe im Wiki Beispiel: Hallo Welt für AVR (LED blinken)
eine Funktionsdefinition :static volatile uint16_t irq_count = 0;
gelesen ...
Was volatile macht, ist klar: vor Lesen der Variable immer neu holen, da ja im Interrupt verändert werden könnte.
Aber die Kombination static volatile verstehe ich nicht.
Static soll doch eigentlich die Unveränderbarkeit garantieren ...
Und dann allgemein, was sollen die static - Definitionen von Funktionen im uC- Bereich?
Ich hab beim googlen folgendes gefunden:
http://de.wikibooks.org/wiki/C-Progr...g:_static_&_Co.
Gruß,
SIGINT
Mein Satz - Static soll doch eigentlich die Unveränderbarkeit garantieren -
ist natürlich schmarn gewesen. Habe static mit const verwechselt - pfeifel
Danke an Sigint - gute Info:
Auch vor Funktionen kann das Schlüsselwort static stehen. in diesen Fall bedeutet dieses, dass die Funktion nur im Rahmen der Datei, in welcher die Funktion steht, genutzt werden kann.
Aha - das ist so zu verstehen, wie die private Definition bei bei C++, eben bezogen auf eine c-Datei.
Zu meiner Frage:
static volatile uint16_t irq_count = 0;
das static ist also Quatsch - wenn die Deklaration außerhalb einer Funktion - also global definiert wird. Macht nur Sinn innerhalb einer Funktion.
Oder bringt das irgendwelche Vorteil im uC-Bereich?
Innerhalb einer Funktion wäre static richtig, sozusagen als permanenter Funktionsspeicher mit Inhaltsbehalt, aber dann ist die Variable außerhalb ja nicht bekannt, daran ändert auch das volatile nichts!
Habe ich das richtig verstanden?
Gruß
Stefan
Nö, wenn es unveränderlich sein soll sagt man "const".Zitat von StefPan
Mehr findest du im C-Tutorial:
[wiki="C-Tutorial#Speicherklassen]
https://www.roboternetz.de/wissen/in...peicherklassen
Disclaimer: none. Sue me.
Lesezeichen