- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: static beisst volatile

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.09.2006
    Beiträge
    10

    static beisst volatile

    Anzeige

    E-Bike
    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?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Ich hab beim googlen folgendes gefunden:
    http://de.wikibooks.org/wiki/C-Progr...g:_static_&_Co.

    Gruß,
    SIGINT

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    30.09.2006
    Beiträge
    10
    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

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802

    Re: static beisst volatile

    Zitat Zitat von StefPan
    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/in...peicherklassen
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress