Sdílet prostřednictvím


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 pushzáznamem v interním zásobníku kompilátoru přiřadí název záznamu. Při použití se popvyskočí 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í popse 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_segpragma 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_segpragma 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() {
}

Viz také

Direktivy Pragma a __pragma _Pragma klíčová slova