Udostępnij za pośrednictwem


code_seg

Określa segment tekstu, w którym funkcje są przechowywane w pliku .obj.

#pragma code_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

Uwagi

Dyrektywa pragma code_seg nie kontroluje umieszczania kodu obiektowego wygenerowanego dla szablonów skonkretyzowanych ani kodu niejawnie wygenerowanego przez kompilator — na przykład funkcji specjalnych elementów członkowskich.Firma Microsoft zaleca używanie zamiast tego atrybutu __declspec(code_seg(...)), ponieważ daje on kontrolę nad umieszczaniem całego kodu obiektowego.Obejmuje to kod wygenerowany przez kompilator.

Segment w pliku .obj to nazwany blok danych, który jest ładowany do pamięci jako jednostka.Segment tekstu to segment, który zawiera kod wykonywalny.W tym artykule terminy segment i sekcja są używane zamiennie.

Dyrektywa pragmy code_seg informuje kompilator, aby umieścić cały kolejny kod obiektowy z jednostki translacji w segmencie tekstu o nazwie segment-name.Domyślnie segment tekstu używany dla funkcji w pliku .obj ma nazwę .text.

Dyrektywa pragmy code_seg bez parametrów resetuje nazwę segmentu tekstu dla kolejnego kodu obiektowego do postaci .text.

  • 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 jest używane z push, przypisuje nazwę rekordowi na wewnętrznym stosie kompilatora.Gdy jest używane z pop, zdejmuje rekordy z wewnętrznego stosu aż do usunięcia identifier; jeśli identifier nie zostanie znaleziony na wewnętrznym stosie, nic nie zostanie zdjęte.

    identifier umożliwia zdjęcie wielu rekordów przy użyciu tylko jednego polecenia pop.

  • „segment-name” (opcjonalne)
    Nazwa segmentu.Gdy jest używane z pop, stos jest zdejmowany, a segment-name staje się aktywną nazwą segmentu tekstu.

  • „segment-class” (opcjonalne)
    Ignorowanie, ale włączone dla zachowania zgodności z C++ w wersji wcześniejszej niż wersja 2.0.

Można użyć aplikacji DUMPBIN.EXE, aby wyświetlić pliki .obj.Wersje DUMPBIN dla każdej obsługiwanej architektury docelowej są dołączone do Visual Studio.

Przykład

W tym przykładzie przedstawiono sposób użycia dyrektywy pragmy code_seg do kontroli, gdzie umieścić kod obiektowy:

// 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() {
}

Aby uzyskać listę nazw, które nie powinny być używane do tworzenia sekcji, zobacz /SECTION.

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

Zobacz też

Informacje

code_seg (__declspec)

Dyrektywy pragma i słowo kluczowe __Pragma