Als extern deklarierte funktionen



  • hallo zusammen

    wollte kurz fragen warum es sinn macht, funnktions-deklarationen mit der extern speicherklasse zu versehen? bei variablen und objekten macht es für mich sinn, weil man damit explizit auf ein/e bereits global deklarierte/s variable/objekt verweisst. aber wozu bei funktions-deklarationen? angenommen wir haben vollgenden fall:

    //file1.cpp
    
    //definition
    void Function()
    {
    }
    

    dann möchten wir Function in file2.cpp verwenden:

    //file2.cpp
    
    //deklaration
    void Function();
    
    //ausführen
    Function();
    

    und das funktioniert ja. wozu also extern bei funktionen? ich dachte zuerst das die extern verwendung dann sinn macht, wenn für funktionen z.B. keine header existieren. aber extern ist ja garnicht notwendig wie ich bemerkt habe. kann es sein das es bei funktionen nicht notwendig ist, weil man funktionen nunmal nicht instanziieren kann 🕶 ? sprich, der aufruf einer funktion ist immer der call zur einzigsten funktion die es davon gäbe? anderst als bei objekten, variablen. dementsprechend weiss der compiler immer welche funktion damit gemeint ist, oder? ich denke mal, ausser wenn die definition mit der speicherklasse static beglückt wurde.

    kooooooommt das hin? :xmas1: :xmas2:



  • funktionsdeklarationen sind immer von haus aus extern - ein extra extern bringt garnichts.

    es sei denn man macht ein extern "C" daraus, aber das ist dann wieder eine andere geschichte 😉



  • Du kannst extern aber verwenden, wenn du die Linkage der Funktionen explizit angeben willst. Ist vielleicht praktisch, wenn du nebenbei noch static -Funktionen hast. Notwendig ist es jedoch nicht.


Log in to reply