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 textavsnitt (segment) där funktioner lagras i objektfilen (.obj).
Syntax
#pragma code_seg([ "section-name" [,"section-class" ] ] ])
#pragma code_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 det aktiva textavsnittsnamnet efter popen.
identifierare
(Valfritt) När det används med pushtilldelar du posten ett namn på den interna kompilatorstacken. När det används med pop, dyker direktivet upp poster från den interna stacken tills identifierare tas bort. Om identifierare inte finns i den interna stacken, visas ingenting.
"section-name"
(Valfritt) Namnet på ett avsnitt. När den används med poppoppas stacken och avsnittsnamn blir det aktiva textavsnittsnamnet.
"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 textavsnitt är ett avsnitt som innehåller körbar kod. I den här artikeln har termerna segment och avsnitt samma innebörd.
I code_segpragma-direktivet uppmanas kompilatorn att placera all efterföljande objektkod från översättningsenheten i ett textavsnitt med namnet avsnittsnamn. Som standard heter textavsnittet som används för funktioner i en objektfil .text. Ett code_segpragma direktiv utan ett avsnittsnamn-parametern återställer textavsnittets namn för den efterföljande objektkoden till .text.
code_seg
pragma-direktivet styr inte placeringen av objektkod som genereras för instansierade mallar. Den styr inte heller kod som genereras implicit av kompilatorn, till exempel särskilda medlemsfunktioner. Om du vill styra koden rekommenderar vi att du använder attributet __declspec(code_seg(...)) i stället. Det ger dig kontroll över placeringen av all objektkod, inklusive kompilatorgenererad kod.
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 initierade data (data_seg), onitialiserade data (bss_seg) och const-variabler (const_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
Det här exemplet visar hur du använder code_segpragma-direktivet för att styra var objektkoden placeras:
// pragma_directive_code_seg.cpp
void func1() { // stored in .text
}
#pragma code_seg(".my_data1")
void func2() { // stored in my_data1
}
#pragma code_seg(push, r1, ".my_data2")
void func3() { // stored in my_data2
}
#pragma code_seg(pop, r1) // stored in my_data1
void func4() {
}
int main() {
}
Se även
code_seg (__declspec)
Pragma-direktiv och nyckelorden __pragma och _Pragma