Anzeigen: Delphi
C++
Anzeigeeinstellungen
#pragma init_seg
Aus RAD Studio XE2
Nach oben zu Pragma-Direktiven (Übersicht) - Index
Syntax (siehe Pseudogrammatik)
#pragma init_seg({ compiler | lib | user })
Beschreibung
Mit #pragma init_seg steuern Sie die Reihenfolge, in der Startcode ausgeführt wird.
#pragma init_seg(compiler)-Code wird vor #pragma init_seg(lib)-Code und #pragma init_seg(lib)-Code vor #pragma init_seg(user)-Code ausgeführt.
Beispiel
Angenommen, Ihr Projekt enthält die folgenden Dateien:
| main.cpp | Unit1.cpp | Unit2.cpp |
|---|---|---|
#include <vcl.h> #include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) { return 0; } |
#include <iostream> using namespace std; class X { public: X() { cout << "X ctor" << endl; } }; #pragma init_seg(lib) static X x; |
#include <iostream> using namespace std; class Y { public: Y() { cout << "Y ctor" << endl; } }; #pragma init_seg(user) static Y y; |
Diese Anwendung zeigt Folgendes an (setzen Sie einen Haltepunkt in die Zeile mit der return-Anweisung der Funktion main, um die Konsolenausgabe zu sehen):
X ctor Y ctor
Das bedeutet, dass die globale Variable x vor der globalen Variable y initialisiert wird. Zum Ändern der Initialisierungsreihenfolge müssen Sie die Optionen der Direktive #pragma init_seg austauschen:
| main.cpp | Unit1.cpp | Unit2.cpp |
|---|---|---|
#include <vcl.h> #include <tchar.h> int _tmain(int argc, _TCHAR* argv[]) { return 0; } |
#include <iostream> using namespace std; class X { public: X() { cout << "X ctor" << endl; } }; #pragma init_seg(user) static X x; |
#include <iostream> using namespace std; class Y { public: Y() { cout << "Y ctor" << endl; } }; #pragma init_seg(lib) static Y y; |
Diese Anwendung zeigt Folgendes an:
Y ctor X ctor