const_seg

Especifica el segmento donde las variables de const se almacenan en el archivo .obj.

#pragma const_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

Comentarios

El significado de los términos segmento y sección se puede cambiar en este tema.

los archivos de OBJ se pueden ver con la aplicación de dumpbin .El segmento predeterminado en el archivo .obj para las variables de const es .rdata.Algunas variables de const , como escalares, automáticamente está alineada en la secuencia de código.El código de Línea no aparecerá en .rdata.

const_seg sin parámetros restablece el segmento a .rdata.

  • inserción(opcional)
    Inserta un registro en la pila interna del compilador.inserción puede tener un identificador y un nombre de segmento.

  • pop (opcional)
    Quita un registro desde la parte superior de la pila interna del compilador.

  • identificador (opcional)
    Cuando se utiliza con inserción, asigna un nombre al registro en la pila interna del compilador.Cuando se usa con pop, los estallidos registran de pila interna hasta que se quite el identificador ; si el identificador no se encuentra en la pila interna, no se extrae nada.

    Mediante el identificador habilita varios registros que se saque con un solo comando de pop .

  • “nombre de segmento”(opcional)
    el nombre de un segmento*.* Cuando se utiliza con pop, se extrae la pila y el nombre de segmento se convierte en el nombre de segmento activo.

  • “segmento-clase” (opcional)
    Incluido por compatibilidad con C++ antes de la versión 2,0.se omite.

Ejemplo

// pragma_directive_const_seg.cpp
// compile with: /EHsc
#include <iostream>

const int i = 7;               // inlined, not stored in .rdata
const char sz1[]= "test1";     // stored in .rdata

#pragma const_seg(".my_data1")
const char sz2[]= "test2";     // stored in .my_data1

#pragma const_seg(push, stack1, ".my_data2")
const char sz3[]= "test3";     // stored in .my_data2

#pragma const_seg(pop, stack1) // pop stack1 from stack
const char sz4[]= "test4";     // stored in .my_data1

int main() {
    using namespace std;
   // const data must be referenced to be put in .obj
   cout << sz1 << endl;
   cout << sz2 << endl;
   cout << sz3 << endl;
   cout << sz4 << endl;
}
  

Comentarios

Vea /SECTION para una lista de nombres que no se debe utilizar al crear una sección.

También puede especificar las secciones para los datos inicializados (data_seg), los datos sin inicializar (bss_seg), y funciones (code_seg).

Vea también

Referencia

Directivas de pragma y la palabra clave de __Pragma