Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Especifica a seção de dados (segmento) em que as variáveis inicializadas são armazenadas no arquivo objeto (.obj).
Sintaxe
#pragma data_seg([ "section-name" [,"section-class" ] ])
#pragma data_seg(push|pop{ } [,identificador ] [,"nome da seção" [,"classe da seção" ] ])
Parâmetros
push
(Opcional) Coloca um registro na pilha interna do compilador. Um push pode ter um identificador e um section-name.
pop
(Opcional) Remove um registro da parte superior da pilha interna do compilador. Um pop pode ter um identificador e um section-name. Você pode exibir vários registros usando apenas um comando pop com o identificador. O section-name se tornará o nome da seção de dados ativa após o pop.
identificador
(Opcional) Quando usado com push, atribui um nome ao registro na pilha interna do compilador. Quando usado com pop, retira os registros da pilha interna até que o identificador seja removido. Se o identificador não for encontrado na pilha interna, nada será exibido.
O identificador permite que vários registros sejam exibidos com um único comando pop.
"section-name"
(Opcional) O nome de uma seção. Quando usada com pop, a pilha é removida e section-name se tornará o nome da seção de dados ativa.
"section-class"
(Opcional) Ignorado, mas incluído para compatibilidade com versões do Microsoft C++ anteriores à versão 2.0.
Comentários
Uma seção em um arquivo-objeto é um bloco de dados nomeado carregado na memória como uma unidade. Uma seção de dados é uma seção que contém dados inicializados. Neste artigo, os termos segmento e seção têm o mesmo significado.
A seção padrão no arquivo .obj para variáveis inicializadas é .data. As variáveis não inicializadas são consideradas inicializadas em zero e são armazenadas em .bss.
A diretiva data_segpragma informa ao compilador para colocar todos os itens de dados inicializados da unidade de tradução em uma seção de dados nomeada section-name. Por padrão, a seção de dados usada para dados inicializados em um arquivo de objeto é nomeada .data. As variáveis não inicializadas são consideradas inicializadas em zero e armazenadas em .bss. Uma diretiva data_segpragma sem um parâmetro section-name redefine o nome da seção de dados dos itens de dados inicializados subsequentes para .data.
Os dados alocados usando data_seg não retêm informações sobre a localização.
Para uma lista de nomes que não devem ser usados para criar uma seção, confira /SECTION.
Também é possível especificar as seções para variáveis const (const_seg), dados não inicializados (bss_seg) e funções (code_seg).
Você pode usar o aplicativo DUMPBIN.EXE para exibir arquivos-objeto. As versões de DUMPBIN para cada arquitetura de destino com suporte estão incluídas no Visual Studio.
Exemplo
// 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() {
}