Udostępnij za pośrednictwem


const_seg

Określa segmentu gdzie stała zmienne są przechowywane w pliku .obj.

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

Uwagi

Znaczenie postanowień segment i sekcji są stosowane zamiennie w tym temacie.

OBJ. pliki mogą być wyświetlane z dumpbin aplikacji.Segment domyślny w pliku .obj const .rdata jest zmienne.Niektóre const zmienne, takich jak funkcji skalarnych, są automatycznie inlined do strumienia kodu.Kod inlined nie będzie wyświetlany w .rdata.

Definiujących obiekt wymagające dynamiczne inicjowania w const_seg powoduje zachowanie niezdefiniowany.

#pragma const_segResetuje segmentu .rdata bez parametrów.

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

    Przy użyciu identifier umożliwia wiele rekordów, aby się tam pojawi za pomocą jednego pop polecenia.

  • "segment-name"(opcjonalnie)
    Nazwa segmentu.W przypadku użycia z pop, jest tam pojawi stosu i segment-name staje się nazwą active segmentu.

  • "segment-class"(opcjonalnie)
    Uwzględnione dla zgodności z C++ przed w wersji 2.0.Zostanie zignorowany.

Przykład

// pragma_directive_const_seg.cpp
// compile with: /EHsc
#include <iostream>

const int i = 7;               // inlined, not stored in .rdata
const char sz1[]= "test1";     // stored in .rdata

#pragma const_seg(".my_data1")
const char sz2[]= "test2";     // stored in .my_data1

#pragma const_seg(push, stack1, ".my_data2")
const char sz3[]= "test3";     // stored in .my_data2

#pragma const_seg(pop, stack1) // pop stack1 from stack
const char sz4[]= "test4";     // stored in .my_data1

int main() {
    using namespace std;
   // const data must be referenced to be put in .obj
   cout << sz1 << endl;
   cout << sz2 << endl;
   cout << sz3 << endl;
   cout << sz4 << endl;
}
  

Komentarze

Zobacz /sekcji lista nazw nie należy używać podczas tworzenia sekcji.

Można również określić sekcje dla danych zainicjowana (data_seg), odinicjowany danych (bss_seg) i funkcji (code_seg).

Zobacz też

Informacje

Dyrektywy pragma i słowo kluczowe __Pragma