bss_seg
Určuje segment v souboru .obj, kde jsou uloženy neinicializované proměnné.
#pragma bss_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
Poznámky
Soubory OBJ lze zobrazit pomocí aplikace dumpbin.Výchozím segmentem neinicializovaných dat v souboru .obj je .bss.V některých případech lze pomocí bss_seg urychlit časy načítání seskupením neinicializovaných dat do jednoho oddílu.
bss_seg bez parametrů resetuje segment na .bss.
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_bss_seg.cpp
int i; // stored in .bss
#pragma bss_seg(".my_data1")
int j; // stored in "my_data1"
#pragma bss_seg(push, stack1, ".my_data2")
int l; // stored in "my_data2"
#pragma bss_seg(pop, stack1) // pop stack1 from stack
int m; // stored in "stack_data1"
int main() {
}
Lze také určit oddíly inicializovaných dat (data_seg), funkcí (code_seg) a konstantních proměnných (const_seg).
Data jejichž paměť byla uvolněna pomocí direktivy pragma bss_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.