Benutzen von Funktionen in anderen Modulen



  • Hallo.

    Wenn ich z.b. ein Porgramm prog1.cpp und prog1.hpp ohne main mit mehreren Funktionen habe (Deklarationen in .hpp, Definitionen in .cpp).
    Dann habe ich ein zweites Programm prog2.cpp mit main, in dem ich Funktionen des ersten benutze indem ich die prog1.hpp include.
    Ich kompiliere beide als object und linke sie anschließend zusammen. Wie geht der Linker dabei vor? Im einzelnen interessiert mich:

    Kopiert er die beiden Objects einfach zusammen oder schaut er, welche Funktionen auch tatsächlich irgendwann mal beginnend ab der main benutzt werden und packt dann nur diese ins Binary?

    Vielen Dank für Antworten im Voraus.



  • Torax123 schrieb:

    Hallo.

    Wenn ich z.b. ein Porgramm prog1.cpp und prog1.hpp ohne main mit mehreren Funktionen habe (Deklarationen in .hpp, Definitionen in .cpp).
    Dann habe ich ein zweites Programm prog2.cpp mit main, in dem ich Funktionen des ersten benutze indem ich die prog1.hpp include.
    Ich kompiliere beide als object und linke sie anschließend zusammen. Wie geht der Linker dabei vor? Im einzelnen interessiert mich:

    Kopiert er die beiden Objects einfach zusammen oder schaut er, welche Funktionen auch tatsächlich irgendwann mal beginnend ab der main benutzt werden und packt dann nur diese ins Binary?

    Vielen Dank für Antworten im Voraus.

    Im Normalfall werden Symbole die nicht gebraucht werden entfernt. Sprich, es landen nur Funktionen in der Binary die tatsächlich verwendet werden.
    Bei Debug-Builds kann das anders aussehen.
    rya.


Anmelden zum Antworten