#pragma init_seg
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