code_seg pragma

Specifica la sezione di testo (segmento) in cui le funzioni vengono archiviate nel file dell'oggetto (obj).

Sintassi

#pragma code_seg( [ "section-name" [ , "section-class" ] ] )
#pragma code_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 di testo attivo dopo il pop.

identificatore
(Facoltativo) Se usato con push, assegna un nome al record nello stack del compilatore interno. Se usata con pop, la direttiva rimuove 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.

"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 di testo attivo.

"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 di testo è una sezione che contiene codice eseguibile. In questo articolo i termini segmento e sezione hanno lo stesso significato.

La code_segpragma direttiva indica al compilatore di inserire tutto il codice oggetto successivo dall'unità di conversione in una sezione di testo denominata section-name. Per impostazione predefinita, la sezione di testo usata per le funzioni in un file oggetto è denominata .text. Una code_segpragma direttiva senza un parametro section-name reimposta il nome della sezione di testo per il codice oggetto successivo su .text.

La code_segpragma direttiva non controlla il posizionamento del codice oggetto generato per i modelli di cui è stata creata un'istanza. Né controlla il codice generato in modo implicito dal compilatore, ad esempio funzioni membro speciali. Per controllare tale codice, è consigliabile usare invece l'attributo __declspec(code_seg(...)) . Consente di controllare la posizione di tutto il codice oggetto, incluso il codice generato dal compilatore.

Per un elenco di nomi che non devono essere usati per creare una sezione, vedere /SECTION.

È anche possibile specificare sezioni per i dati inizializzati (data_seg), i dati non inizializzati (bss_seg) e le variabili const (const_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

Questo esempio illustra come usare la direttiva code_segpragma per controllare dove viene inserito il codice oggetto:

// pragma_directive_code_seg.cpp
void func1() {                  // stored in .text
}

#pragma code_seg(".my_data1")
void func2() {                  // stored in my_data1
}

#pragma code_seg(push, r1, ".my_data2")
void func3() {                  // stored in my_data2
}

#pragma code_seg(pop, r1)      // stored in my_data1
void func4() {
}

int main() {
}

Vedi anche

code_seg (__declspec)
Direttive Pragma e parole __pragma chiave e _Pragma