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_segpragma 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_segpragma 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() {
}

Vedi anche

Pragmadirettive e parole __pragma chiave e _Pragma