data_seg
Określa segment danych, w którym przechowywane są zmienne inicjowane w pliku .obj.
#pragma data_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
Uwagi
Znaczenie terminów segment i sekcja jest w tym temacie wymienne.
Pliki OBJ mogą być wyświetlane w aplikacji dumpbin.Domyślny segment dla zmiennych inicjowanych w pliku .obj to .data.Niezainicjowane zmienne są uważane za zainicjowane zerami i przechowywane w .bss.
data_seg bez parametrów resetuje segment na .data.
push (opcjonalne)
Umieszcza rekord na wewnętrznym stosie kompilatora.Push może mieć identifier i segment-name.pop (opcjonalne)
Usuwa rekord z góry wewnętrznego stosu kompilatora.identifier (opcjonalne)
Gdy używany z push, przypisuje nazwę do rekordu na wewnętrznym stosie kompilatora.Gdy używany z pop, zdejmuje rekordy z wewnętrznego stosu, aż do usunięcia identifier; jeśli identifier nie zostanie odnaleziony na wewnętrznym stosie, nic nie zostanie zdjęte ze stosu.Identifier umożliwia zdjęcie ze stosu wielu rekordów za pomocą pojedynczego polecenia pop.
"segment-name" (opcjonalne)
Nazwa segmentu*.* Gdy używana z pop, następuje zdjęcie segmentu ze stosu i segment-name staje się aktywną nazwą segmentu."segment-class" (opcjonalne)
Dołączone dla zachowania zgodności z językiem C++ w wersjach wcześniejszych niż 2.0.Jest ignorowane.
Przykład
// 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() {
}
Dane przypisane przy użyciu data_seg nie zachowują żadnych informacji dotyczących lokalizacji.
Zobacz /SECTION, aby uzyskać listę nazw, których nie należy używać przy tworzeniu sekcji.
Możesz również określić sekcje dla zmiennych "const" (const_seg), niezainicjowanych danych (bss_seg) i funkcji (code_seg).