static bei Funktionen. Wann einsetzen?



  • Hallo,

    mit static kann ich ja erreichen, dass Funktionen nur innerhalb einer Datei aufgerufen werden können. Meine Frage ist jetzt aber, wann benötige ich das?. Denn ich kann die Funktion ja auch einfach im Kopf der C-Datei definieren und nicht im Header, dann kann man von außerhalb nicht auf die Funktion zugreifen. Und dann brauch ich auch kein static. Und wissen, dass die Funktion existiert, braucht ja auch niemand, wozu auch wenn ich nicht will, dass man von außerhalb darauf zugreift.



  • Wenn du folgenden Fall hast benötigst du static aber:

    // datei1.c
    
    void function()
    {
    }
    
    // main.c
    
    // Das wird der Compiler aufgrund doppelter Definition nicht übersetzen
    void function()
    {
    }
    
    int main()
    {
    }
    

    Das liegt daran, dass dem Compiler die Funktion in main.c zwar nicht bekannt ist, diese aber dennoch "registriert" ist. (je nach Compiler und Einstellung auch umgekehrt). Mit static allerdings sind die Funktionen nur in der selben Datei "registriert".



  • Also alle Funktionen die nur innerhalb der Datei genutzt werden, sollten als static deklariert werden.



  • @player4245
    Stimmt, das ist ein Grund. An den hab ich gar nicht gedacht.

    Janjan schrieb:

    Also alle Funktionen die nur innerhalb der Datei genutzt werden, sollten als static deklariert werden.

    Ja klar, damit man halt erkennt, dass sie nur innerhalb genutzt werden sollen. Aber das könnte man auch mit Code Conventions regeln. Wobei die bei C jetzt nicht so verbreitet sind wie bei manch anderer Programmiersprache.



  • Natürlich könnte man das auch mit Code Conventions machen, aber diese Lösung ist besser 😉


Anmelden zum Antworten