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