Go Down

Topic: Verständnisfrage zu Statischer Funktions-Deklaration (Read 425 times) previous topic - next topic

Roeschti

In der Reference steht ja die Beschreibung betr "static", falls dies für eine Variable gewünscht wird. So weit ok, nur was ist der tiefere Sinn, wenn dies mit einer Function gemacht wird?

Mir gehts um die Zeilen aus dem TinyGPS Beispiel wie diese hier:
Code: [Select]

static void sendstring(TinyGPS &gps, const PROGMEM char *str);


Dies im Header des Sketches definiert oberhalb der "void setup"

Wozu ist diese Deklaration notwendig?

Thx für alle Tipps!

pylon

Eine Funktion, die "static" definiert ist, ist nur für Code in der selben Datei aufrufbar, für Code in anderen Dateien sind sie unsichtbar.
Achtung, dies gilt nur für (C-)Funktionen, nicht für Klassen-Methoden, die static definiert sind.


Udo Klein

Quote

Eine Funktion, die "static" definiert ist, ist nur für Code in der selben Datei aufrufbar, für Code in anderen Dateien sind sie unsichtbar.


Leider nur halb richtig. Eine "static" Funktion ist nur in der gleichen Datei SICHTBAR. Code aus anderen Dateien kann sie sehr wohl rufen. Fragt sich nur wie er an die Einsprungadresse kommt ;)

Wenn man mit Funktionspointern arbeitet kann man damit die Einsprungadressen übergeben und dann auch "unsichtbare" Funktionen rufen.
Check out my experiments http://blog.blinkenlight.net

Go Up