statische Funktionen
-
Hi!
Mal ne Frage, hab jetzt öfters mal statische Funktionen gesehen, z.B.
static void blubb() { } int main() { blubb(); }
Was hat es damit auf sich? Ich kenne "static" nur von C++-Memberfunktionen und von Variablen
-
static Funktionen sind nur innerhalb der aktuellen Uebersetzungseinheit sichtbar.
Ergo ist es eine Art "private" auf Filescope Ebene.
In C++ wuerde man unnamed namespaces verwenden in Java package private.
-
Verstehe ich das falsch oder ist es dann nicht merkwürdig, statische Funktionen in einem Header zu deklarieren?
-
Aber doch nicht in einem Header, der der nur von einer Datei eingebunden wird, und nur der Übersichtlichkeit halber besteht.
-
Badestrand schrieb:
Verstehe ich das falsch oder ist es dann nicht merkwürdig, statische Funktionen in einem Header zu deklarieren?
Was waere der Sinn eine Funktion in einem Header (also der oeffentlichen Schnittstelle) zu deklarieren wenn man die Funktion nur intern verwendet?
Man deklariert package private Funktionen in Java ja auch package private und nicht public, oder?
-
Ich weiß auch nicht, der Header ist von den embedded-Leuten an der Uni, gehört zur Vorlesung dazu. Ich gucke mal, welche Source-Dateien dazugehören, evtl ist der ja wirklich nur zur Übersicht, wie von wurst vermutet.
edit: Ok, liegt nur eine .c-Datei dabei, scheint dann wirklich zur Übersicht zu sein. Danke euch beiden für die Aufklärung!
-
wurst schrieb:
Aber doch nicht in einem Header, der der nur von einer Datei eingebunden wird, und nur der Übersichtlichkeit halber besteht.
üblich isses nicht, aber vielleicht will man, dass mehrere funktionen mit gleicher signatur, nur anderem innenleben, in den sources sind. aber seltsam ist es schon.