data_seg
pragma
Specifica la sezione dati (segmento) in cui le variabili inizializzate vengono archiviate nel file dell'oggetto (.obj).
Sintassi
#pragma data_seg(
[ "section-name" [,
"section-class" ] ])
#pragma data_seg(
{push
|pop
} [,
identificatore ] [,
"section-name" [,
"section-class" ] ])
Parametri
push
(Facoltativo) Inserisce un record nello stack interno del compilatore. Un push
oggetto può avere un identificatore e un nome di sezione.
pop
(Facoltativo) Rimuove un record dalla parte superiore dello stack del compilatore interno. Un pop
oggetto può avere un identificatore e un nome di sezione. È possibile visualizzare più record usando un pop
solo comando usando l'identificatore . Il nome della sezione diventa il nome della sezione dati attiva dopo il pop.
identificatore
(Facoltativo) Se usato con push
, assegna un nome al record nello stack del compilatore interno. Se usato con pop
, apre i record dallo stack interno fino a quando non viene rimosso l'identificatore . Se l'identificatore non viene trovato nello stack interno, non viene visualizzato nulla.
l'identificatore consente di estrarre più record con un singolo pop
comando.
"section-name"
(Facoltativo) Nome di una sezione. Se usato con pop
, lo stack viene estratto e il nome della sezione diventa il nome della sezione dati attiva.
"section-class"
(Facoltativo) Ignorato, ma incluso per la compatibilità con le versioni di Microsoft C++ precedenti alla versione 2.0.
Osservazioni:
Una sezione di un file oggetto è un blocco denominato di dati caricati in memoria come unità. Una sezione dati è una sezione che contiene dati inizializzati. In questo articolo i termini segmento e sezione hanno lo stesso significato.
La sezione predefinita nel file di .obj per le variabili inizializzate è .data
. Le variabili non inizializzate vengono considerate inizializzate su zero e vengono archiviate in .bss
.
La data_seg
pragma direttiva indica al compilatore di inserire tutti gli elementi di dati inizializzati dall'unità di conversione in una sezione di dati denominata section-name. Per impostazione predefinita, la sezione dati usata per i dati inizializzati in un file oggetto è denominata .data
. Le variabili non inizializzate vengono considerate inizializzate su zero e vengono archiviate in .bss
. Una data_seg
pragma direttiva senza un parametro nome sezione reimposta il nome della sezione dei dati per gli elementi di dati inizializzati successivi su .data
.
I dati allocati tramite data_seg
non conservano informazioni sulla relativa posizione.
Per un elenco di nomi che non devono essere usati per creare una sezione, vedere /SECTION
.
È anche possibile specificare sezioni per le variabili const (const_seg
), i dati non inizializzati (bss_seg
) e le funzioni (code_seg
).
È possibile usare l'applicazione DUMPBIN.EXE per visualizzare i file oggetto. Le versioni di DUMPBIN per ogni architettura di destinazione supportata sono incluse in Visual Studio.
Esempio
// pragma_directive_data_seg.cpp
int h = 1; // stored in .data
int i = 0; // stored in .bss
#pragma data_seg(".my_data1")
int j = 1; // stored in .my_data1
#pragma data_seg(push, stack1, ".my_data2")
int l = 2; // stored in .my_data2
#pragma data_seg(pop, stack1) // pop stack1 off the stack
int m = 3; // stored in .my_data1
int main() {
}