Udostępnij za pośrednictwem


data_seg pragma

Określa sekcję danych (segment), w której inicjowane zmienne są przechowywane w pliku obiektu (.obj).

Składnia

#pragma data_seg( [ "section-name" [ , "section-class" ] ] )
#pragma data_seg({ pushpop | } [ , identyfikator ] [ , "nazwa-sekcji" [ , "section-class" ])

Parametry

push
(Opcjonalnie) Umieszcza rekord w wewnętrznym stosie kompilatora. Element push może mieć identyfikator i nazwę sekcji.

pop
(Opcjonalnie) Usuwa rekord z góry wewnętrznego stosu kompilatora. Element pop może mieć identyfikator i nazwę sekcji. Wiele rekordów można wyświetlać przy użyciu tylko jednego pop polecenia przy użyciu identyfikatora. Nazwa-sekcji staje się nazwą aktywnej sekcji danych po wyskakującym okienku.

identifier
(Opcjonalnie) W przypadku użycia z pushprogramem przypisuje nazwę do rekordu w wewnętrznym stosie kompilatora. W przypadku użycia z elementem poppolecenie wyskakuje rekordy poza stos wewnętrzny do momentu usunięcia identyfikatora . Jeśli identyfikator nie zostanie znaleziony na stosie wewnętrznym, nic nie zostanie pominięte.

Identyfikator umożliwia mapowania wielu rekordów za pomocą jednego pop polecenia.

"nazwa-sekcji"
(Opcjonalnie) Nazwa sekcji. W przypadku użycia z elementem popstos jest zwinięty, a nazwa sekcji staje się aktywną nazwą sekcji danych.

"section-class"
(Opcjonalnie) Zignorowane, ale uwzględnione w celu zachowania zgodności z wersjami języka Microsoft C++ starszymi niż wersja 2.0.

Uwagi

Sekcja w pliku obiektu jest nazwanym blokiem danych załadowanych do pamięci jako jednostki. Sekcja danych to sekcja zawierająca zainicjowane dane. W tym artykule terminy segmentu i sekcji mają takie samo znaczenie.

Domyślną sekcją w pliku .obj dla zainicjowanych zmiennych jest .data. Zmienne niezainicjowane są uważane za zainicjowane na zero i są przechowywane w pliku .bss.

Dyrektywa data_segpragma nakazuje kompilatorowi umieszczenie wszystkich zainicjowanych elementów danych z jednostki tłumaczenia w sekcji danych o nazwie section-name. Domyślnie sekcja danych używana do inicjowania danych w pliku obiektu nosi nazwę .data. Zmienne niezainicjowane są uważane za zainicjowane na zero i są przechowywane w pliku .bss. data_segpragma Dyrektywa bez parametru nazwa-sekcji resetuje nazwę sekcji danych dla kolejnych zainicjowanych elementów danych na .data.

Dane przydzielone przy użyciu data_seg nie zachowują żadnych informacji o swojej lokalizacji.

Aby uzyskać listę nazw, których nie należy używać do tworzenia sekcji, zobacz /SECTION.

Można również określić sekcje dla zmiennych const (const_seg), niezainicjowanych danych (bss_seg) i funkcji (code_seg).

Aby wyświetlić pliki obiektów, możesz użyć aplikacji DUMPBIN.EXE . Wersje narzędzia DUMPBIN dla każdej obsługiwanej architektury docelowej są dołączone do programu Visual Studio.

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 .my_data1

int main() {
}

Zobacz też

Pragmadyrektywy i __pragma słowa kluczowe i _Pragma