Udostępnij za pośrednictwem


code_seg pragma

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

Składnia

#pragma code_seg( [ "section-name" [ , "section-class" ] ] )
#pragma code_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ę aktywną nazwą sekcji tekstowej po oknie podręcznym.

identifier
(Opcjonalnie) W przypadku użycia z pushprogramem przypisuje nazwę do rekordu w wewnętrznym stosie kompilatora. W przypadku użycia z funkcją popdyrektywa 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.

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

"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 tekstowa to sekcja zawierająca kod wykonywalny. W tym artykule terminy segmentu i sekcji mają takie samo znaczenie.

Dyrektywa code_segpragma nakazuje kompilatorowi umieszczenie całego późniejszego kodu obiektu z jednostki tłumaczenia w sekcji tekstowej o nazwie section-name. Domyślnie sekcja tekstowa używana dla funkcji w pliku obiektu nosi nazwę .text. code_segpragma Dyrektywa bez parametru nazwa-sekcji resetuje nazwę sekcji tekstowej dla kolejnego kodu obiektu na .text.

Dyrektywa code_segpragma nie kontroluje umieszczania kodu obiektu wygenerowanego dla tworzonych szablonów. Nie kontroluje również kodu generowanego niejawnie przez kompilator, takiego jak specjalne funkcje składowe. Aby kontrolować ten kod, zalecamy użycie atrybutu __declspec(code_seg(...)) . Zapewnia kontrolę nad umieszczaniem całego kodu obiektu, w tym kodu generowanego przez kompilator.

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

Można również określić sekcje dla zainicjowanych danych (data_seg), niezainicjowanych danych (bss_seg) i zmiennych const (const_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

W tym przykładzie pokazano, jak użyć dyrektywy code_segpragma w celu kontrolowania miejsca umieszczenia kodu obiektu:

// pragma_directive_code_seg.cpp
void func1() {                  // stored in .text
}

#pragma code_seg(".my_data1")
void func2() {                  // stored in my_data1
}

#pragma code_seg(push, r1, ".my_data2")
void func3() {                  // stored in my_data2
}

#pragma code_seg(pop, r1)      // stored in my_data1
void func4() {
}

int main() {
}

Zobacz też

code_seg (__declspec)
Pragmadyrektywy i __pragma słowa kluczowe i _Pragma