Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anger det dataavsnitt (segment) där initierade variabler lagras i objektfilen (.obj).
Syntax
#pragma data_seg(
[ "section-name" [,
"section-class" ] ] ])
#pragma data_seg(
{push
|pop
} [,
identifierare ] [,
"section-name" [,
"section-class" ] ] ])
Parametrar
push
(Valfritt) Placerar en post på den interna kompilatorstacken. En push
kan ha en identifierare och avsnittsnamn.
pop
(Valfritt) Tar bort en post överst i den interna kompilatorstacken. En pop
kan ha en identifierare och avsnittsnamn. Du kan visa flera poster med bara ett pop
kommando med hjälp av identifierare. Det avsnittsnamnet blir namnet på det aktiva dataavsnittet efter pop-fönstret.
identifierare
(Valfritt) När det används med push
tilldelar du posten ett namn på den interna kompilatorstacken. När den används med pop
, öppnas poster från den interna stacken tills identifierare tas bort. Om identifierare inte finns i den interna stacken, visas ingenting.
identifierare gör att flera poster kan visas med ett enda pop
kommando.
"section-name"
(Valfritt) Namnet på ett avsnitt. När den används med pop
poppas stacken och avsnittsnamn blir namnet på det aktiva dataavsnittet.
"section-class"
(Valfritt) Ignoreras, men ingår för kompatibilitet med versioner av Microsoft C++ tidigare än version 2.0.
Anmärkningar
Ett avsnitt i en objektfil är ett namngivet datablock som läses in i minnet som en enhet. Ett dataavsnitt är ett avsnitt som innehåller initierade data. I den här artikeln har termerna segment och avsnitt samma innebörd.
Standardavsnittet i filen .obj för initierade variabler är .data
. Variabler som är onitialiserade anses initieras till noll och lagras i .bss
.
I data_seg
pragma-direktivet uppmanas kompilatorn att placera alla initierade dataobjekt från översättningsenheten i ett dataavsnitt med namnet avsnittsnamn. Som standard heter det dataavsnitt som används för initierade data i en objektfil .data
. Variabler som är onitialiserade anses initieras till noll och lagras i .bss
. Ett data_seg
pragma direktiv utan ett avsnittsnamn parameter återställer dataavsnittets namn för efterföljande initierade dataobjekt till .data
.
Data som allokeras med data_seg
behåller ingen information om dess plats.
En lista med namn som inte ska användas för att skapa ett avsnitt finns i /SECTION
.
Du kan också ange avsnitt för const-variabler (const_seg
), onitialiserade data (bss_seg
) och funktioner (code_seg
).
Du kan använda DUMPBIN.EXE-programmet för att visa objektfiler. Versioner av DUMPBIN för varje målarkitektur som stöds ingår i Visual Studio.
Exempel
// 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() {
}