section
pragma
Crea una sección en un archivo OBJ.
Sintaxis
#pragma section( "
section-name"
[,
atributos ])
Comentarios
Los términos segmento y sección tienen el mismo significado en este artículo.
Cuando se define una sección, sigue siendo válida para el resto de la compilación. Sin embargo, debe usar __declspec(allocate)
o no se coloca nada en la sección.
section-name un parámetro obligatorio que será el nombre de la sección. El nombre no debe estar en conflicto con ningún nombre de sección estándar. Consulte /SECTION
para obtener una lista de los nombres que no debe utilizar cuando cree una sección.
attributes es un parámetro opcional que consta de uno o más atributos separados por comas por asignar a la sección. Algunos atributos posibles son:
Atributo | Descripción |
---|---|
read |
Permite operaciones de lectura en los datos. |
write |
Permite operaciones de escritura en los datos. |
execute |
Permite que el código se ejecute. |
shared |
Comparte la sección entre todos los procesos que cargan la imagen. |
nopage |
Marca la sección como no paginable. Útil para controladores de dispositivos Win32. |
nocache |
Marca la sección como no almacenable en caché. Útil para controladores de dispositivos Win32. |
discard |
Marca la sección como descartable. Útil para controladores de dispositivos Win32. |
remove |
Marca la sección como no residente en memoria. Solo para controladores de dispositivos virtuales (VxD). |
Si no especifica ningún atributo, la sección tiene atributos read
y write
.
Ejemplo
En el ejemplo siguiente, la primera sección pragma identifica la sección y sus atributos. El entero j
no se coloca en mysec
porque no se ha declarado mediante __declspec(allocate)
. En su lugar, j
entra en la sección de datos. El entero i
sí va a mysec
como resultado de su atributo de clase de almacenamiento __declspec(allocate)
.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}