frage zu statischem objekt



  • (Wie) kann man ein Visual Studio-Projekt derart konfigurieren, daß bei der Erstellung einer (statischen) Bibliothek ein globales Objekt stets zur Laufzeit angelegt wird, obwohl dieses im Anwendungsprogramm nicht benötigt werden. Beispiel:

    bibliothek.cpp -> wird kompiliert und liefert eine statische Bibliothek 'biliothek.lib'
    ...
    int Ein_Objekt_das_unbedingt_angelegt_werden_soll_aber_von_niemandem_verwendet_wird ; ...

    geht das ueberhaupt!?!?!

    danke.


  • Mod

    Wahrscheinlich mit dem Schlüsselwort "volatile". Das ist aber etwas das man so selten braucht, dass ich nicht genau weiß, welche Optimierungen dadurch verhindert werden.



  • Was willst du denn genau damit erreichen? Vielleicht gibts ne bessere Lösung.

    btw:
    Kannst du nicht einen dummy Gebrauch in irgendeiner Funktion machen? Das sollte dann ja bereits reichen.



  • @SeppJ:
    Inwiefern soll volatile dabei helfen?

    @pepe75:
    Nur durch das inkludieren einer .lib wird es mit den meisten Toolchains nicht gehen. Bzw. nicht garantiert, da bei Function-Level-Linking das Ding vermutlich einfach weggeschmissen wird.
    Man kann aber in einem Header-File eine Referenz darauf erzwingen.

    Wenn man das in allen Header-Files der .lib macht...


  • Mod

    hustbaer schrieb:

    @SeppJ:
    Inwiefern soll volatile dabei helfen?

    Weil man dadurch ja kenntlich macht, dass externe Programme auf die Variable zugreifen. Ich kann mir schwer vorstellen, dass diese dann wegoptimiert würde.



  • @SeppJ:
    Ich kann mir schwer vorstellen, dass es den Linker interessiert, ob man irgendwas als "volatile" deklariert hat.
    Globale Variablen mit "external linkage" werden sowieso niemals vom Compiler "wegoptimiert". Was passieren kann, ist, dass der Linker sieht, dass sie nicht gebraucht werden, und sie daher einfach nicht mitlinkt.


Anmelden zum Antworten