data_seg
pragma
Určuje oddíl dat (segment), ve kterém jsou inicializované proměnné uloženy v souboru objektu (.obj).
Syntaxe
#pragma data_seg(
[ "section-name" [,
"section-class" ] ])
#pragma data_seg(
{push
|pop
} [,
identifikátor ] [,
"section-name" [,
"section-class" ] ])
Parametry
push
(Volitelné) Vloží záznam do zásobníku interního kompilátoru. A push
může mít identifikátor a název oddílu.
pop
(Volitelné) Odebere záznam z horní části interního zásobníku kompilátoru. A pop
může mít identifikátor a název oddílu. Pomocí identifikátoru můžete zobrazit více záznamů pouze jedním pop
příkazem. Název oddílu se stane názvem aktivního datového oddílu za pop.
identifikátor
(Volitelné) Při použití se push
záznamem v interním zásobníku kompilátoru přiřadí název záznamu. Při použití se pop
vyskočí záznamy z interního zásobníku, dokud se identifikátor neodebere. Pokud se v interním zásobníku nenajde identifikátor , nic se nevypíná.
Identifikátor umožňuje, aby se pomocí jednoho pop
příkazu přepnulo více záznamů.
"section-name"
(Volitelné) Název oddílu. Při použití pop
se zásobník zobrazí a název oddílu se změní na název aktivního datového oddílu.
"section-class"
(Volitelné) Ignorováno, ale je součástí kompatibility s verzemi Microsoft C++ staršími než verze 2.0.
Poznámky
Oddíl v souboru objektu je pojmenovaný blok dat načtených do paměti jako jednotka. Oddíl dat je oddíl, který obsahuje inicializovaná data. V tomto článku mají segment termínů a oddíl stejný význam.
Výchozí oddíl v souboru .obj pro inicializované proměnné je .data
. Proměnné, které nejsou inicializovány, jsou považovány za inicializované na nulu a jsou uloženy v .bss
.
Direktiva data_seg
pragma kompilátoru říká, aby všechny inicializované datové položky z jednotky překladu umístil do datového oddílu s názvem section-name. Ve výchozím nastavení se datový oddíl použitý pro inicializovaná data v souboru objektu jmenuje .data
. Proměnné, které nejsou inicializovány, jsou považovány za inicializované na nulu a jsou uloženy v .bss
. Direktiva data_seg
pragma bez parametru section-name resetuje název oddílu dat pro následné inicializované datové položky na .data
.
Data přidělená pomocí data_seg
nezachovají žádné informace o jejich umístění.
Seznam názvů, které by se neměly používat k vytvoření oddílu, najdete v tématu /SECTION
.
Můžete také zadat oddíly pro proměnné const (const_seg
), neinicializovaná data (bss_seg
) a funkce (code_seg
).
K zobrazení souborů objektů můžete použít DUMPBIN.EXE aplikaci. Verze DUMPBIN pro každou podporovanou cílovou architekturu jsou součástí sady Visual Studio.
Příklad
// 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() {
}