bss_seg
Especifica el segmento en el que las variables sin inicializar se almacenan en el archivo .obj.
#pragma bss_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
Comentarios
Los archivos .obj se pueden ver con la aplicación dumpbin. El segmento predeterminado del archivo .obj para los datos sin inicializar es .bss. En algunos casos, el uso de bss_seg puede reducir los tiempos de carga mediante la agrupación de los datos sin inicializar en una sección.
bss_seg sin parámetros restablece el segmento a .bss.
push(opcional)
Inserta un registro en la pila interna del compilador. push puede tener identifier y segment-name.pop (opcional)
Quita un registro de la parte superior de la pila interna del compilador.identifier (opcional)
Cuando se utiliza con push, asigna un nombre al registro en la pila interna del compilador. Cuando se usa con pop, extrae los registros de la pila interna hasta que se quita el identifier; si no se encuentra el identifier en la pila interna, no se extrae nada.El elemento identifier permite que se extraigan varios registros con un solo comando pop.
"segment-name" (opcional)
Nombre de un segmento*.* Cuando se utiliza con pop, se extrae la pila y segment-name se convierte en el nombre de segmento activo."segment-class" (opcional)
Se incluye por compatibilidad con C++ antes de la versión 2.0. Se omite.
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 "stack_data1"
int main() {
}
También puede especificar secciones para los datos inicializados (data_seg), las funciones (code_seg) y las variables const (const_seg).
Los datos asignados mediante el uso de la directiva pragma bss_seg no conservan información sobre su ubicación.
Para obtener una lista de los nombres que no debe utilizar cuando cree una sección, vea /SECTION.