Compileroptimierung beim C++Builder 6 ausschalten



  • Für unsere Projekte soll eine Identifizierung der SW-Komponenten ermöglicht werden.
    Hierfür soll die die what-Kennung verwendet werden, um Software auch unter UNIX mit dem Kommando what identifizieren zu können.
    Bei der Produktion eines Projektes per TCL-Skript wird eine Revision.h erzeugt, welche diese Informationen zur Identifizierung enthält.
    Um zu verhindern, das der Compiler diese Informationen weg optimiert, falls diese im Projekt selbst nicht verwendet werden, soll dieser Bereich nicht durch denn Compiler optimiert werden.
    Also hier endlich meine Frage 🙂

    Wie kann ich verhindern, dass Teile des Quellcodes nicht durch den Compiler optimiert werden?



  • "Before you develop a solution, make sure you really understand the problem."
    Warum fragst du nicht direkt, wie du dein Ziel erreichen kannst? Auf der Grundlage der von dir bereitgestellten Informationen kann ich dir nicht weiterhelfen, aber zumindest ist der Ansatz, die Compiler-Optimierungen zu deaktivieren, sicher nicht zielführend. (Für das Herauslassen von Code und Daten aus der Executable ist übrigens auch eher der Linker verantwortlich.)

    Was genau willst du bezwecken: soll einfach nur ein Identifikationsstring im PE-Image der Executable auftauchen? Oder willst du eine Ressource hinzulinken? Und wie sehen denn die Headerdateien aus? Hast du Einfluß darauf, was in die Headerdateien geschrieben wird?

    Und was "what" angeht: meinst du "whatis"?



  • Einige Compileroptionen kann man im Quellcode mit #pragma option ein und ausschalten. Mit #pragma option push bzw. pop kann man diese Einstellungen auch speichern bzw. wiederholen.
    Die Optimierung könnte man also mit

    #pragma option -Od
    

    ausschalten.
    Mehr dazu in der Hilfe.
    Wie sinnvoll sowas ist steht auf einen anderem Blatt.



  • @audacia ich mein das Kommando "what".
    Auszug aus "man what" what - identify SCCS files (DEVELOPMENT)

    @Braunstein natürlich weiß ich, dass es nicht sinnvoll ist die Compileroptimierung auszuschalten.
    Sie soll nach SW-Informationen auch gleich wieder eingeschaltet werden. Dank deiner Hilfe habe ich das auch in der Borland-Hilfe gefunden.

    Schnellstmöglichen Code erzeugen

    #pragma option -O2
    

    Der Hintergrund dieser ganzen Aktion ist, die exe-Datei evt. mit einem TCL-Skript zu öffnen und die what-Kennung zu suchen und auszuwerten.
    Es soll einfach sichergestellt werden, dass die what-Kennung definitiv nicht wegoptimiert wird.

    Ansonsten Danke für die Hilfe!



  • Kernel386 schrieb:

    @audacia ich mein das Kommando "what".

    Also das hier?

    Dann möchtest du vermutlich einen String in die Executable einfügen. Das geht folgendermaßen:

    #pragma comment (exestr, "Dieser String wird in die Executable geschrieben")
    

    (Die Dokumentation dazu findest du hier.)

    Und es hat mit Optimierungen überhaupt nichts zu tun 😉



  • @audacia Das ist eine hervorragende Idee. Ich werde wohl diesen Weg verfolgen.
    Die Optimierung ein- und auszuschalten war der erste Ansatz einer Lösung.
    Deine Lösung gefällt mir wesentlich besser.
    Danke! 🙂


Anmelden zum Antworten