Dela via


data_seg pragma

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 pushtilldelar 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 poppoppas 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_segpragma-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_segpragma 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() {
}

Se även

Pragma-direktiv och nyckelorden __pragma och _Pragma