Compartir a través de


bss_seg pragma

Especifica la sección (segmento) en la que las variables inicializadas se almacenan en el archivo de objeto (.obj).

Sintaxis

#pragma bss_seg( [ "section-name" [ , "section-class" ] ] )
#pragma bss_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. La section-name se convierte en el nombre de sección de datos activo de BSS 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, la directiva 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.

"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 BSS 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 BSS es una sección que contiene datos no inicializados. En este artículo, los términos segmento y sección tienen el mismo significado.

La directiva bss_segpragma indica al compilador que coloque todos los elementos de datos inicializados de la unidad de traducción en una sección BSS denominada section-name. En algunos casos, el uso de bss_seg puede reducir los tiempos de carga mediante la agrupación de los datos no inicializados en una sección. De forma predeterminada, la sección BSS usada para los datos no inicializados en un archivo objeto se denomina .bss. Una directiva bss_segpragma sin un parámetro section-name restablece el nombre de la sección BSS para los elementos de datos no inicializados posteriores en .bss.

Los datos asignados mediante bss_segpragma 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 datos inicializados (data_seg), funciones (code_seg) y variables const (const_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_bss_seg.cpp
int i;                     // stored in .bss
#pragma bss_seg(".my_data1")
int j;                     // stored in .my_data1

#pragma bss_seg(push, stack1, ".my_data2")
int l;                     // stored in .my_data2

#pragma bss_seg(pop, stack1)   // pop stack1 from stack
int m;                     // stored in .my_data1

int main() {
}

Consulte también

Directivas pragma y las palabras clave __pragma y _Pragma