Wie verhindere ich, dass meine 'unbenutzten' globalen Variablen kompiliert werden?

Ich bin mit der statischen Initialisierung zu vereinfachen den Prozess der Registrierung einige Klassen, mit einer Fabrik in C++. Leider, denke ich, dass der compiler die Optimierung aus der "unbenutzt" - Objekte, die gemeint sind, zu tun, die sinnvolle Arbeit in Ihren Konstruktoren. Gibt es eine Möglichkeit zu sagen, der compiler nicht optimieren, eine Globale variable?

class SomeClass {
    public:
        SomeClass() {
            /* do something useful */
        }
};

SomeClass instance;

Mein Haltepunkt in SomeClass Konstruktor nicht getroffen zu werden. In meinem eigentlichen code, SomeClass ist in eine header-Datei und die Instanz ist, die in eine source-Datei, mehr oder weniger allein.

EDIT: Wie geahnt, die von KJAWolf, dieser code ist tatsächlich kompiliert in eine statische lib, nicht die ausführbare Datei. Sein Zweck ist es, zu registrieren, einige Arten auch durch das statische lib mit einer statischen Liste von Arten und Ihren Schöpfer, für ein Werk zu Lesen dann aus der Konstruktion. Da diese Typen sind mit der lib, diesen code hinzufügen der ausführbaren Datei ist unerwünscht.

Außerdem entdeckte ich, dass durch das verschieben der code, um eine andere Quelldatei mit anderen vorhandenen code, es funktioniert gut. Es scheint, dass eine Datei rein, die aus diesen globalen Objekten ist, was das problem verursacht. Es ist, als ob, die übersetzungs-Einheit wurde komplett ignoriert.

InformationsquelleAutor der Frage Ben Hymers | 2009-08-04

Schreibe einen Kommentar