bss_seg
pragma
Gibt den Abschnitt (Segment) an, in dem nicht initialisierte Variablen in der Objektdatei (.obj) gespeichert werden.
Syntax
#pragma bss_seg(
[ "Section-name" [,
"section-class" ])
#pragma bss_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 Popup zum aktiven BSS-Abschnittsnamen.
identifier
(Optional) Bei Verwendung mit push
, weist dem Datensatz im internen Compilerstapel einen Namen zu. Bei Verwendung mit pop
der Direktive 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.
"Abschnittsname"
(Optional) Der Name eines Abschnitts. Bei Verwendung mit pop
dem Stapel wird der Stapel eingetaucht, und der Abschnittsname wird zum aktiven BSS-Abschnittsnamen.
"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 BSS-Abschnitt ist ein Abschnitt , der nicht initialisierte Daten enthält. In diesem Artikel haben die Begriffe Segment und Abschnitt dieselbe Bedeutung.
Die bss_seg
pragma Direktive weist den Compiler an, alle nicht initialisierten Datenelemente aus der Übersetzungseinheit in einen BSS-Abschnitt namens "Abschnittsname" zu setzen. In einigen Fällen kann die Verwendung von bss_seg
Ladezeiten beschleunigen, indem nicht initialisierte Daten in einem Abschnitt gruppiert werden. Standardmäßig wird der BSS-Abschnitt, der für nicht initialisierte Daten in einer Objektdatei verwendet wird, benannt .bss
. Eine bss_seg
pragma Direktive ohne Abschnittsnamenparameter setzt den BSS-Abschnittsnamen für die nachfolgenden nicht initialisierten Datenelemente auf .bss
.
Daten, die mit der Verwendung zugewiesen werden, bss_seg
pragma 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 initialisierte Daten (data_seg
), Funktionen (code_seg
) und Konstvariablen (const_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_bss_seg.cpp
int i; // stored in .bss
#pragma bss_seg(".my_data1")
int j; // stored in .my_data1
#pragma bss_seg(push, stack1, ".my_data2")
int l; // stored in .my_data2
#pragma bss_seg(pop, stack1) // pop stack1 from stack
int m; // stored in .my_data1
int main() {
}