data_seg
pragma
Especifica la sección (segmento) de datos en la que las variables inicializadas se almacenan en el archivo objeto (.obj).
Sintaxis
#pragma data_seg(
[ "section-name" [,
"section-class" ] ])
#pragma data_seg(
{push
|pop
} [,
identifier ] [,
"section-name" [,
"section-class" ] ])
Parámetros
push
(Opcional) Inserta un registro en la pila interna del compilador. Un parámetro push
puede tener un valor identifier y section-name.
pop
(Opcional) Quita un registro de la parte superior de la pila interna del compilador. Un parámetro pop
puede tener un valor identifier y section-name. Puede sacar varios registros con un solo comando pop
mediante el valor identifier. section-name se convierte en el nombre de sección de datos activo después de la extracción.
identifier
(Opcional) Cuando se usa con push
, asigna un nombre al registro en la pila interna del compilador. Cuando se usa con pop
, saca los registros de la pila interna hasta que se quita identifier. Si no se encuentra identifier en la pila interna, no se saca nada.
El elemento identifier permite que se saquen varios registros con un solo comando pop
.
"section-name"
(Opcional) Nombre de una sección. Cuando se usa con pop
, se saca la pila y section-name se convierte en el nombre de sección de datos activo.
"section-class"
(Opcional) Se omite, pero se incluye por compatibilidad con las versiones de Microsoft C++ anteriores a la versión 2.0.
Comentarios
Una sección de un archivo objeto es un bloque de datos con nombre que se carga en memoria como una unidad. Una sección de datos es una sección que contiene datos inicializados. En este artículo, los términos segmento y sección tienen el mismo significado.
La sección predeterminada del archivo .obj para las variables inicializadas es .data
. Las variables que no están inicializadas se consideran inicializadas en cero y se almacenan en .bss
.
La directiva pragma data_seg
indica al compilador que coloque todos los elementos de datos inicializados de la unidad de traducción en una sección de datos denominada section-name. De forma predeterminada, la sección de datos usada para los datos inicializados en un archivo objeto se denomina .data
. Las variables que no están inicializadas se consideran inicializadas en cero y se almacenan en .bss
. Una directiva pragma data_seg
sin un parámetro section-name restablece el nombre de la sección de datos para los elementos de datos inicializados subsiguientes en .data
.
Los datos asignados mediante data_seg
no conservan información sobre su ubicación.
Para obtener una lista de los nombres que no se deben usar a fin de crear una sección, consulte /SECTION
.
También puede especificar secciones para las variables const (const_seg
), los datos inicializados (bss_seg
) y las funciones (code_seg
).
Se puede usar la aplicación DUMPBIN.EXE para ver archivos objeto. Las versiones de DUMPBIN para cada arquitectura de destino admitida se incluyen con Visual Studio.
Ejemplo
// 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 .my_data1
int main() {
}