code_seg
Určuje textový segment, kde jsou funkce uloženy v souboru .obj.
#pragma code_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
Poznámky
Směrnice pragma code_seg nemá vliv na umístění objektového kódu generovaného pro instancované šablony ani kódu generovaného implicitně kompilátorem, například zvláštní členské funkce.Doporučujeme místo toho použít atribut __declspec(code_seg(...)), protože s ním můžete ovládat umístění celého objektového kódu.To zahrnuje kód generovaný kompilátorem.
Segment v souboru .obj je pojmenovaný blok dat, který je načten do paměti jako celek.Textový segment je segment, který obsahuje spustitelný kód.V tomto článku se slova segment a část zaměňují.
Směrnice pragma code_seg instruuje kompilátor, aby uvedl veškerý následný objektový kód z převodu jednotky do textového segmentu text s názvem segment-name.Ve výchozím nastavení se textový segment použitý v souboru .obj nazývá .text.
Směrnice pragma code_seg bez parametrů obnoví výchozí název textového segmentu pro následný objektový kód na .text.
Push (volitelné)
Vloží záznam do zásobníku vnitřního kompilátoru.push může mít identifier a segment-name.pop (volitelné)
Odstraní nejvyšší záznam z vnitřního zásobníku kompilátoru.identifier (volitelné)
Při použití s push přiřadí název záznamu ve vnitřním zásobníku kompilátoru.Při použití s pop bude brát záznamy z vnitřního zásobníku, dokud neodstraní identifier; pokud identifier není nalezen v interním zásobníku, nic nevezme.identifier umožňuje odebrání více záznamů pouze s jedním příkazem pop.
"segment-name" (volitelné)
Název segmentuPři použití s pop je zásobník odebrán a segment-name se stane aktivním názvem textového segmentu."segment-class" (volitelné)
Ignorováno, ale zahrnuto pro kompatibilitu s verzemi jazyka C++ před verzí 2.0.
Lze použít aplikaci DUMPBIN.EXE k zobrazení souborů obj.Součástí Visual Studio jsou verze DUMPBIN pro každou podporovanou cílovou architekturu.
Příklad
Tento příklad ukazuje, jak použít směrnici pragma code_seg a určit místo uložení objektového kódu:
// 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() {
}
Seznam názvů, které by neměly být využívány k vytvoření oddílu, naleznete v tématu /SECTION.
Můžete také určit oddíly pro inicializovaná data (data_seg), neinicializovaná data (bss_seg) a proměnné const (const_seg).