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(
{push
pop
| } [,
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 push
programem przypisuje nazwę do rekordu w wewnętrznym stosie kompilatora. W przypadku użycia z funkcją pop
dyrektywa 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 pop
stos 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_seg
pragma 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_seg
pragma Dyrektywa bez parametru nazwa-sekcji resetuje nazwę sekcji tekstowej dla kolejnego kodu obiektu na .text
.
Dyrektywa code_seg
pragma 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