Funktionen nicht Mitcompilieren die nicht benutzt werden?
-
Hi,
blöde frage:
Ich hab viele Funktionen in meinem Programm die die EXE-Datei sehr groß machen (ca. 600 Kbyte) und viele werden nicht benutzt.
Jetzt möchte ich die Funktionen aber nicht rauslöschen aus dem Source, sondern frage mich wie man folgendes Automatisieren kann:
Wenn eine Funktion benutzt wird, soll sie mitcompiliert werden, wird sie nicht benutzt soll sie halt nicht erfasst werden (vom PräCompiler rausgeworfen werden!).
Wie geht sowas? Hab gehört man kann das mit #ifdef und #endif machen, aber wie kann man das Automatisieren?
-
Die meisten Compiler werden das von alleine tun. Bei manchen musst du es aber auf der commandline beim Linken angeben. Zum Beispiel macht sich ein -s beim MinGW immer wieder bezahlt.
-
und wie ist das beim VC++7.NET?
-
Funktionen, die nicht aufgerufen werden, kommen auch nicht in die Exe.
Was du im Übrigen noch machen kannst: Dafür sorgen, dass nur die Funktionen nicht neu kompiliert werden, wenn sie nicht verändert wurden.
Such mal nach dem Stichwort: Vorkompilierte Header.Und nach Größe optimieren kann man natürlich auch noch lassen.
Die Sache mit den Präprozessorbedingungen kann nützlich sein:
#ifdef BIG kompiliere auch die Funktion #endif
Beeinflussen aber eher die Kompilierzeit als die Größe der EXE.
Mit deinen 600kb tippe ich eher mal darauf, dass du eine Debugversion erstellt hast.
-
Der macht's in der Standard-Release-Einstellung der IDE. Es geht hier um die Einstellung "Enable function-level linking"