section pragma

Crea una sección en un archivo OBJ.

Sintaxis

#pragma section( "section-name" [ ,attributes ] )

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

Consulte también

Directivas pragma y las palabras clave __pragma y _Pragma