section
pragma
Crea una sezione in un file OBJ.
Sintassi
#pragma section( "
section-name"
[,
attributi ])
Osservazioni:
I termini segmento e sezione hanno lo stesso significato in questo articolo.
Una volta definita una sezione, rimane valida per il resto della compilazione. Tuttavia, è necessario usare __declspec(allocate)
o non viene inserito alcun elemento nella sezione .
section-name è un parametro obbligatorio che diventa il nome della sezione. Il nome non deve essere in conflitto con alcun nome di sezione standard. Vedere /SECTION
per un elenco di nomi che non è consigliabile usare durante la creazione di una sezione.
attributes è un parametro facoltativo costituito da uno o più attributi delimitati da virgole da assegnare alla sezione. Gli attributi possibili sono:
Attributo | Descrizione |
---|---|
read |
Consente operazioni di lettura sui dati. |
write |
Consente operazioni di scrittura sui dati. |
execute |
Consente l'esecuzione di codice. |
shared |
Condivide la sezione tra tutti i processi che caricano l'immagine. |
nopage |
Contrassegna la sezione come non visualizzabile in pagine. Utile per i driver di dispositivo Win32. |
nocache |
Contrassegna la sezione come non memorizzabile nella cache. Utile per i driver di dispositivo Win32. |
discard |
Contrassegna la sezione come annullabile. Utile per i driver di dispositivo Win32. |
remove |
Contrassegna la sezione come non residente in memoria. Solo per i driver di dispositivo virtuali (VxD). |
Se non si specificano attributi, la sezione ha read
attributi e write
.
Esempio
In questo esempio la prima sezione identifica la sezione pragma e i relativi attributi. L'intero j
non viene inserito perché mysec
non è stato dichiarato usando __declspec(allocate)
. Viene invece j
inserita nella sezione dati. L'intero i
viene inserito mysec
a causa del relativo __declspec(allocate)
attributo della classe di archiviazione.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}