Udostępnij za pośrednictwem


const_seg

Określa segmentu gdzie const zmienne są przechowywane w pliku .obj.

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

Uwagi

Znaczenie terminów segment i sekcji są wymienne, w tym temacie.

OBJ pliki mogą być wyświetlane z dumpbin aplikacji.Segmentem domyślnym w pliku .obj const zmiennych jest .rdata.Niektóre const zmiennych, takich jak skalary, są automatycznie inlined do strumienia kodu.Inlined kod nie będzie wyświetlany w .rdata.

const_seg bez parametrów resetuje segmentu do .rdata.

  • push(opcjonalnie)
    Umieszcza rekordu stosu wewnętrznego kompilatora.A kampanii może mieć identyfikatora i Nazwa segmentu.

  • POP (opcjonalnie)
    Usuwa rekord z wierzchu stosu wewnętrznego kompilatora.

  • Identyfikator (opcjonalnie)
    Gdy używana z replikacji wypychanej, przypisuje nazwę rekordu na stosie wewnętrznego kompilatora.Gdy używana z pop, punkty obecności rekordów ze stosu wewnętrznego aż do identyfikator usunięte; Jeśli identyfikatora nie zostanie znaleziony na stosu wewnętrznego, nic nie jest tam pojawi.

    Za pomocą identyfikatora umożliwia wiele rekordów, aby się pojawiały się błędy za pomocą jednego pop polecenia.

  • "Nazwa segmentu"(opcjonalnie)
    Nazwa segmentu*.* Gdy używana z pop, pojawiały się błędy stosu i Nazwa segmentu staje się nazwa aktywny segment.

  • "segment klasy" (opcjonalnie)
    Włączone dla zgodności z C++ w wersji 2.0.Jest ignorowana.

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 /Section do listy nazw nie należy używać podczas tworzenia sekcji.

Można również określić sekcje zainicjowane dane (data_seg), niezainicjowanych danych (bss_seg), a funkcje (code_seg).

Zobacz też

Informacje

Dyrektywy pragma i __Pragma słowa kluczowego