Condividi tramite


data_seg

Specifica il segmento di dati in cui le variabili inizializzate vengono archiviate nel file .obj.

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

Note

In questo argomento il significato dei termini segmento e sezione sono intercambiabili.

I file con estensione obj possono essere visualizzati con l'applicazione dumpbin. Il segmento predefinito nel file .obj per le variabili inizializzate è .data. Le variabili che non sono inizializzate sono considerate inizializzate sul valore zero e vengono archiviate nel segmento .bss.

data_seg senza parametri consente di reimpostare il segmento su .data.

  • push (facoltativo)
    Inserisce un record nello stack interno del compilatore. Un elemento push può avere identifier e segment-name.

  • pop (facoltativo)
    Rimuove un record dall'inizio dello stack interno del compilatore.

  • identifier (facoltativo)
    Se utilizzato con push, assegna un nome al record nello stack interno del compilatore. Se utilizzato con pop, estrae record dallo stack interno finché non viene rimosso identifier; se identifier non viene trovato nello stack interno, non viene estratto alcun elemento.

    identifier consente di visualizzare più record con un unico comando pop .

  • "segment-name" (facoltativo)
    Nome di un segmento*.* Se utilizzato con pop, viene estratto un elemento dallo stack e segment-name diventa il nome di un segmento attivo.

  • "segment-class" (facoltativo)
    Incluso per la compatibilità con le versioni di C++ precedenti alla versione 2.0. Ignorato.

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 "stack_data1"

int main() {
}

I dati allocati mediante data_seg non mantengono le informazioni sulla relativa posizione.

Per un elenco di nomi che non è necessario utilizzare quando si crea una sezione, vedere /SECTION.

È inoltre possibile specificare le sezioni per la variabili const (const_seg), i dati non inizializzati (bss_seg) e le funzioni (code_seg).

Vedere anche

Riferimenti

Direttive pragma e parola chiave __Pragma