const_seg
specifica il segmento in cui const le variabili vengono memorizzate nel file obj.
#pragma const_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
Note
Il significato dei termini segmento e sezione essere intercambiabile in questo argomento.
I file OBJ possono essere visualizzati con dumpbin applicazione.Il segmento predefinito nel file obj per const le variabili è .rdata.alcuni const le variabili, come scalari, vengono automaticamente inline nel flusso di codice.Il codice inline non verrà visualizzata in .rdata.
const_seg senza le reimpostato di parametri del segmento a .rdata.
richiedere(facoltativo)
Inserisce un record nello stack interno del compilatore.In richiedere può avere identificatore e nome di un segmento.pop (facoltativo)
Rimuove un record dall'inizio dello stack interno del compilatore.identificatore (facoltativo)
una volta utilizzato con richiedere, assegna un nome al record nello stack interno del compilatore.una volta utilizzato con pop, gli schiocchi registra dallo stack interno fino a identificatore viene rimosso, se identificatore non viene trovato nello stack interno, non viene estratto.Tramite identificatore consente più record da visualizzare con un singolo pop comando.
“nome di un segmento„(facoltativo)
il nome di un segmento*.* una volta utilizzato con pop, lo stack viene prelevato e nome di un segmento diventa il nome di un segmento attivo.“segmento-classe„ (facoltativo)
Incluso per la compatibilità con C++ precedenti alla versione 2,0.Viene ignorato.
Esempio
// 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;
}
Commenti
vedere /SECTION per un elenco dei nomi non è necessario utilizzare quando si crea una sezione.
È anche possibile specificare le sezioni per i dati inizializzati su (data_seg), dati non inizializzata (bss_seg) e funzioni (code_seg).