data_seg pragma

Gibt den Datenabschnitt (Segment) an, in dem initialisierte Variablen in der Objektdatei (.obj) gespeichert werden.

Syntax

#pragma data_seg( [ "Section-name" [ , "section-class" ] )
#pragma data_seg( { } push | pop [ , Bezeichner ] [ , "Section-name" [ , "section-class" ] )

Parameter

push
(Optional) Fügt einen Datensatz in den internen Compilerstapel ein. A push kann einen Bezeichner und einen Abschnittsnamen aufweisen.

pop
(Optional) Entfernt einen Datensatz vom oberen Rand des internen Compilerstapels. A pop kann einen Bezeichner und einen Abschnittsnamen aufweisen. Sie können mehrere Datensätze mit nur einem pop Befehl mithilfe des Bezeichners auffüllen. Der Abschnittsname wird nach dem Pop zum Namen des aktiven Datenabschnitts.

identifier
(Optional) Bei Verwendung mit push, weist dem Datensatz im internen Compilerstapel einen Namen zu. Bei Verwendung mit pop, werden Datensätze aus dem internen Stapel angezeigt, bis der Bezeichner entfernt wird. Wenn der Bezeichner im internen Stapel nicht gefunden wird, wird nichts angezeigt.

Mit dem Bezeichner können mehrere Datensätze mit einem einzigen pop Befehl angezeigt werden.

"Abschnittsname"
(Optional) Der Name eines Abschnitts. Bei Verwendung mit popdem Stapel wird der Stapel eingetaucht, und der Abschnittsname wird zum namen des aktiven Datenabschnitts.

"section-class"
(Optional) Ignoriert, ist jedoch aus Gründen der Kompatibilität mit Versionen von Microsoft C++ vor Version 2.0 enthalten.

Hinweise

Ein Abschnitt in einer Objektdatei ist ein benannter Datenblock, der als Einheit in den Arbeitsspeicher geladen wird. Ein Datenabschnitt ist ein Abschnitt , der initialisierte Daten enthält. In diesem Artikel haben die Begriffe Segment und Abschnitt dieselbe Bedeutung.

Der Standardabschnitt in der datei .obj für initialisierte Variablen lautet .data. Variablen, die nicht initialisiert sind, werden als initialisiert auf Null betrachtet und in gespeichert .bss.

Die data_segpragma Direktive weist den Compiler an, alle initialisierten Datenelemente aus der Übersetzungseinheit in einen Datenabschnitt namens "Abschnittsname" zu setzen. Standardmäßig wird der Datenabschnitt, der für initialisierte Daten in einer Objektdatei verwendet wird, benannt .data. Variablen, die nicht initialisiert sind, werden als initialisiert auf Null betrachtet und gespeichert..bss Eine data_segpragma Direktive ohne Abschnittsnamenparameter setzt den Datenabschnittsnamen für die nachfolgenden initialisierten Datenelemente auf .data.

Daten, die mit der Verwendung data_seg zugewiesen werden, behalten keine Informationen über ihren Standort bei.

Eine Liste der Namen, die nicht zum Erstellen eines Abschnitts verwendet werden sollen, finden Sie unter /SECTION.

Sie können auch Abschnitte für Konstvariablen (const_seg), nicht initialisierte Daten () und Funktionen (bss_segcode_seg) angeben.

Sie können die DUMPBIN.EXE-Anwendung verwenden, um Objektdateien anzuzeigen. Versionen von DUMPBIN für jede unterstützte Zielarchitektur sind in Visual Studio enthalten.

Beispiel

// pragma_directive_data_seg.cpp
int h = 1;                     // stored in .data
int i = 0;                     // stored in .bss
#pragma data_seg(".my_data1")
int j = 1;                     // stored in .my_data1

#pragma data_seg(push, stack1, ".my_data2")
int l = 2;                     // stored in .my_data2

#pragma data_seg(pop, stack1)   // pop stack1 off the stack
int m = 3;                     // stored in .my_data1

int main() {
}

Siehe auch

PragmaDirektiven und Schlüsselwörter __pragma _Pragma