[c++ vs. c]: c++ compiler erzeugt größeres binary



  • hallo leute!

    wenn ich folgenden code compiliere, erzeugt mir der c++ compiler eine binary, das ca. 100 bytes größer ist verglichen mit einem c compiler.

    int main() {
      return 0;
    }
    

    wie erklärt sich das?
    ich habe in beiden fällen gcc verwenden(ohne irgendwelche optionen), einmal für ein .cpp und einmal für ein .c file.
    wird da noch irgendeine bibliothek dazugelinkt, und wenn ja, wie kann ich sie weglassen? oder woran liegt das?

    ich wollte eigentlich einem bekannten zeigen, dass klassen und co. keinen overhead erzeugen...

    danke!

    Gruß mathik



  • mathik schrieb:

    ich wollte eigentlich einem bekannten zeigen, dass klassen und co. keinen overhead erzeugen...

    Erzeugen sie nicht?!? 😕 🤡



  • > cat foo.cpp
    int main() {
      return 0;
    }
    > gcc foo.cpp
    > du
    12     a.out
    > mv foo.cpp foo.c
    > gcc foo.c
    > du
    12     a.out
    

    also bei mir sind die ergebnisse gleich. Kann es sein, dass du den g++ benutzt hast? der linkt nämlich noch die libstdc++ hinzu!



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Andere Compiler verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Sgt. Nukem schrieb:

    mathik schrieb:

    ich wollte eigentlich einem bekannten zeigen, dass klassen und co. keinen overhead erzeugen...

    Erzeugen sie nicht?!? 😕 🤡

    erzeugen sie auch nicht.

    Das Problem der groesseren C++ Anwendungen liegt meisstens in der IOStreams Library. Diese ist naemlich sehr umfangreich und 'bloatig'. Deshalb erzeugen viele Compiler mehr Code fuer C++ als fuer C.
    Dieser Overhead von 100KB ist aber konstant - sprich wenn die Anwendung 5MB gross ist, ist der Overhead immer noch 100KB - er ist also nicht signifikant.

    Mit der Zeit werden die Compiler ja auch besser, so dass wir irgendwann keine grosse IOStream Library mehr mitlinken muessen, wenn wir nur einen kleinen Teil daraus verwenden...



  • kingruedi schrieb:

    > cat foo.cpp
    int main() {
      return 0;
    }
    > gcc foo.cpp
    > du
    12     a.out
    > mv foo.cpp foo.c
    > gcc foo.c
    > du
    12     a.out
    

    also bei mir sind die ergebnisse gleich. Kann es sein, dass du den g++ benutzt hast? der linkt nämlich noch die libstdc++ hinzu!

    jo, hab den g++ verwendet. danke!


Anmelden zum Antworten