Das keyword "extern"



  • Hallo zusammen,

    ich habe grade etwas über das keyword "extern" nachgedacht. Es heißt, wenn man eine Funktion von woanders nutzt kann man diese einfach mit extern deklarieren:

    extern void doSomething();
    

    Die Funktion ist dann irgendwo anders definiert und wird beim Linken dann gefunden. Allerdings frage ich mich, wozu das extern da nötig ist. Wenn ich einen header einbinde mit einigen Funktionen, sind diese auch nicht als extern gekennzeichnet. Trotzdem findet der Linker diese dann später.

    Daher die Frage, wozu/wann brauche ich extern, wann nicht?



  • extern = nur Deklaration

    Es nicht mehr als eine Definition geben, aber viele Deklarationen. Wird meines Wissens für Globale verwendet.



  • Bei Variablen brauchst du es.



  • extern void foo();
    // und
    void foo();
    

    ^ sind ident.

    extern int myInt;
    // und
    int myInt;
    

    ^ aber nicht.



  • Such mal in google: external linkage internal linkage keyword extern



  • Danke euch allen.

    Dass es bei Variablen nötig ist (sein kann), leuchtet mir ja ein, nur bei Funktionen hab ich den unterschied nie verstanden. Dann ist es also total nutzlos bei Funktionen, wenn ich das richtig sehe.

    Danke.


Log in to reply