C-Standardbibliothek



  • hallo

    Also folgendes : in meiner main() - Funktion verwende ich die scanf - Funktion . #include <stdio.h> --> Wird vom Präproz. durch Inhalt der Datei ersetzt. Also befinden sich nun in der C-Datei alle Deklarationen von einigen Funktionen.

    So : Wie ist die Standard C-Library wirklich aufgebaut? Gibt es zu jeder header-Datei eine zugehörige Objektdatei , in der alle Funktionen definiert sind , die in der header-Datei deklariert sind , z. B:
    stdio.h --> Funktionsdeklarationen . stdio.o --> Definitionen der in stdio.h deklarierten Funktionen.

    Wenn ja : Wie wird denn die Funktion mit dem Hauptprogramm verlinkt? Werden gleich alle Funktionen in stdio.o / stdio.h mitgelinkt oder nur die Funktion "scanf"?



  • hexbindec schrieb:

    Gibt es zu jeder header-Datei eine zugehörige Objektdatei , in der alle Funktionen definiert sind?

    Ja

    hexbindec schrieb:

    Wenn ja : Wie wird denn die Funktion mit dem Hauptprogramm verlinkt? Werden gleich alle Funktionen in stdio.o / stdio.h mitgelinkt oder nur die Funktion "scanf"?

    Kommt auf den Compiler an. Zumeist liegen die Libs als relokatibler Objektcode vor, bei dem noch die Adressen angepaßt werden müssen. Kommt zumeist "en bloc" daher, heißt, brauchst Du eine, kriegst Du alle.



  • Es kommt drauf an, ob die C Runtime Library statisch oder dynamisch eingelinkt wird.
    Beim statischen Linken werden nur die verwendeten Funktionen in dein Programm einfügt, beim dynamischen Linken wird beim Start des Programms noch die zugehörige DLL geladen (und diese als ganzes, auch wenn nur wenige Funktionen daraus benutzt werden).
    Vorteil des dynamischen Linkes ist aber, daß die DLL nur einmal im Speicher ist, und dieses von den verschiedensten Anwendungen genutzt werden kann.


Anmelden zum Antworten