Standard-Header kastrieren



  • Hallo zusammen

    oftmals lasse ich den Präprozessor diverse Standard-Header wie z.B. stdio, iostream usw. in meine Programme einbinden. Diese sind aber meist recht gross, sodass auch ein kleines Progrämmchen gleich 500 kb gross wird. Deshalb frage ich mich, ob es einen Weg gibt, dem Präprozessor beizubringen, dass er aus den includierten Dateien alles rausschneidet, was ich im Programm dann nicht verwende. Ich weiss, das hört sich kompliziert und recht schwer zu realisieren an, deshalb zweifle ich auch etwas an der Machbarkeit. Aber es wäre halt schon ganz nett, wenn die Progrämmchen nicht immer gleich so gross würden.

    Danke für eure Ratschläge! 🙂



  • Is natürlich Scheisse so ein 500KB Programm wenn man die 200GB Festplatte
    mit DVD-Rips voll hat. 😃 😃



  • Die Header machen dein Programm nicht groß.

    Wie man das Zeug kleiner macht, ist aber sehr plattformspezifisch. Für MSVC++ gibt's hier einen ganz guten Artikel (theoretisch ist darin auch ein Link auf eine Mini-Implementierung der C-Library): http://www.microsoft.com/msj/archive/S572.aspx



  • nur iostream kostet viel. alle anderen kosten nix.
    ja, du hörtst richtig: nix.
    um iostream kommste nicht rum, wenn du cout verwenden willst.

    wenn du die debug-infos ausschaltest, solltest du bei 100-200k statt 500k sein.

    evtl kannste deinem compiler sagen, wer soll ne dll benutzen, wo cout drin lebt. wenn du microsoft hast. dann biste bei 4k statt 500k.



  • und iostream kostet nur was weil da cpp/lib dateien benötigt werden.



  • cpp. schrieb:

    und iostream kostet nur was weil da cpp/lib dateien benötigt werden.

    für <cstring> wird keine lib benötigt?

    nee, iostream kostet, weil da gloable objekte angelegt werden und den linker zwingen, allerhand reinzulinken.

    normale funktionen und methoden werden nur gelinkt, wenn sie im code auch aufgerufen werden.



  • Geiler Artikel, Ringding, danke!

    Als erstes gleich mal den Release-Build-Modus reingehauen, ich wusste gar nicht, dass Debuginfos in den exes eingebindet sein können... 😉 stupid me!


Log in to reply