Sdílet prostřednictvím


data_seg

Určuje datový segment v souboru .obj, kde jsou uloženy inicializované proměnné.

#pragma data_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

Poznámky

Významy pojmů segment a oddíl jsou v tomto tématu zaměnitelné.

Soubory OBJ lze zobrazit pomocí aplikace dumpbin.Výchozí segment v souboru .obj pro inicializované proměnné je .data.Proměnné, které nejsou inicializovány, jsou považovány, že jsou inicializovány na nulu a jsou uloženy v .bss.

Direktiva data_seg bez parametrů obnoví segment na .data.

  • push(volitelné)
    Vloží záznam do vnitřního zásobníku kompilátoru.Příkaz push může obsahovat identifikátor identifier a název segment-name.

  • pop (volitelné)
    Odstraní záznam z vrcholu vnitřního zásobníku kompilátoru.

  • identifier (volitelné)
    Při použití v příkazu push uloží název záznamu do vnitřního zásobníku kompilátoru.Při použití v příkazu pop vyjme všechny záznamy z vnitřního zásobníku až do vyjmutí identifikátoru identifier. Není-li identifikátor identifier ve vnitřním zásobníku nalezen, žádný záznam není vyjmut.

    Identifikátor identifier umožňuje jedním příkazem pop vyjmout několik záznamů.

  • "segment-name"(volitelné)
    Název segmentu*.* Při použití s příkazem pop je ze zásobníku vyjmut záznam a název segment-name se stane aktivním názvem segmentu.

  • "segment-class" (volitelné)
    Zahrnuto z důvodu kompatibility s jazykem C++ starším než verze 2.0.Ignorováno.

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 "stack_data1"

int main() {
}

Data přidělená pomocí data_seg nezachovávají žádné informace o jejich umístění.

Seznam názvů, které by při tvorbě oddílu neměly být používány, naleznete v tématu /SECTION.

Lze také určit oddíly konstantních proměnných (const_seg), neinicializovaných dat (bss_seg) a funkcí (code_seg).

Viz také

Referenční dokumentace

Direktivy Pragma a klíčové slovo __Pragma