Archiv verlassen und diese Seite im Standarddesign anzeigen : static beisst volatile
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-Programmierung:_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
SprinterSB
02.10.2006, 18:54
Static soll doch eigentlich die Unveränderbarkeit garantieren ...
Und dann allgemein, was sollen die static - Definitionen von Funktionen im uC- Bereich?
Nö, wenn es unveränderlich sein soll sagt man "const".
Mehr findest du im C-Tutorial:
[wiki="C-Tutorial#Speicherklassen]
https://www.roboternetz.de/wissen/index.php/C-Tutorial#Speicherklassen
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.