const_seg

Especifica o segmento em que const variáveis são armazenadas no arquivo. obj.

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

Comentários

O significado dos termos segmento e seção são intercambiáveis neste tópico.

Arquivos OBJ podem ser exibidos com o dumpbin aplicativo.O segmento padrão no arquivo. obj para const variáveis é .rdata.Alguns const variáveis, como, por exemplo, escalares, são automaticamente embutidas no fluxo de código.Código embutido não aparecerá em .rdata.

const_seg sem parâmetros redefine o segmento para .rdata.

  • envio(opcional)
    Coloca um registro na pilha interno do compilador.A push pode ter um identificador e nome do segmento.

  • pop (opcional)
    Remove um registro da parte superior da pilha do compilador interno.

  • identificador (opcional)
    Quando usado com push, atribui um nome para o registro na pilha interno do compilador.Quando usado com pop, pops registros na pilha interna até identificador foi removida; Se identificador não for encontrada na pilha interna, nada é exibido.

    Usando identificador permite que vários registros a ser exibido com um único pop comando.

  • "nome do segmento"(opcional)
    O nome de um segmento*.* Quando usado com pop, a pilha é exibida e nome do segmento torna-se o nome do segmento ativo.

  • "classe segmento" (opcional)
    Incluído para compatibilidade com o C++ anteriores à versão 2.0.Ele é ignorado.

Exemplo

// 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;
}
  

Comentários

Consulte /SECTION para obter uma lista de nomes que você não deve usar ao criar uma seção.

Você também pode especificar as seções para dados inicializados (data_seg), dados foi cancelada (bss_seg) e funções (code_seg).

Consulte também

Referência

Diretivas pragma e __Pragma palavra-chave