extern == pointer :-)



  • Hallo

    Ich überlege gerade ein wenig über extern nach und da fiel mir auf, dass extern aus Sicht des Assembler Design eigentlich ein Zeiger ist, oder? 🕶 Ich spreche explizit von der Sicht des Assembler, nicht von der Sicht des Programmierers. Ein Zeiger ist für den Programmierer im Endeffekt die Möglichkeit auf einen Speicherbereich zuzugreiffen.

    In Assembler müsste doch nun die umsetzung des Compilers von extern Variablen eigentlich genau das gleiche geschehen, nur eben ohne die Worte des Entwicklers. Weil extern Variablen sind ja immer nur einmalig vorhanden, genau wie ein Zeiger, der auf nur einen Speicherbereich zeigen kann.

    hehe! Nur mal so meine Samstag Abend Freak-Stunde. 🤡



  • Um es in einfacheren worten auszudrücken: extern verhält sich eigentlich wie ein Zeiger.



  • Bei "extern" an Zeiger zu denken, ist IMHO nicht hilfreich.

    extern kann man benutzen, um aus einer Definition eine Deklaration zu machen.
    extern kann man benutzen, um eine externe Bindung zu erzwingen.

    extern verwandelt nicht eine Variable oder Funktion in einen Zeiger. Der Linker hantiert hier mit "Symbolen" und verknotet Übersetzungseinheiten "irgendwie". Wie das genau passiert, ist eigentlich völlig uninteressant. Wenn's Dich doch interessiert, kannst Du Dir ja mal für Deine Platform das Format der Objektdateien anschauen.

    Gruß,
    SP


Anmelden zum Antworten