bss_seg
pragma
Especifica a seção (segmento) onde as variáveis não inicializadas são armazenadas no arquivo de objeto (.obj).
Sintaxe
#pragma bss_seg(
[ "section-name" [,
"section-class" ] ])
#pragma bss_seg(
{push
|pop
} [,
identificador ] [,
"section-name" [,
"section-class" ] ])
Parâmetros
push
(Opcional) Coloca um registro na pilha interna do compilador. Um push
pode ter um identificador e nome da seção.
pop
(Opcional) Remove um registro da parte superior da pilha interna do compilador. Um pop
pode ter um identificador e nome da seção. Você pode exibir vários registros usando apenas um comando pop
usando o identificador . O nome da seção torna-se o nome da seção BSS ativa após o pop.
identificador
(Opcional) Quando usado com push
, atribui um nome ao registro na pilha interna do compilador. Quando usada com pop
, a diretiva retira registros da pilha interna até que identificador seja removido. Se identificador não for encontrado na pilha interna, nada será exibido.
"nome da secção"
(Opcional) O nome de uma seção. Quando usado com pop
, a pilha é exibida e nome da seção se torna o nome da seção BSS ativa.
"classe de secção"
(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 de objeto é um bloco nomeado de dados que é carregado na memória como uma unidade. Uma seção BSS é uma seção que contém dados não inicializados. Neste artigo, os termos segmento e seção têm o mesmo significado.
A diretiva bss_seg
pragma diz ao compilador para colocar todos os itens de dados não inicializados da unidade de tradução em uma seção BSS chamada nome da seção. Em alguns casos, o uso de bss_seg
pode acelerar os tempos de carregamento agrupando dados não inicializados em uma seção. Por padrão, a seção BSS usada para dados não inicializados em um arquivo de objeto é denominada .bss
. Uma diretiva bss_seg
pragma sem um parâmetro section-name redefine o nome da seção BSS para os itens de dados não inicializados subsequentes para .bss
.
Os dados alocados usando o bss_seg
pragma não retêm nenhuma informação sobre sua localização.
Para obter uma lista de nomes que não devem ser usados para criar uma seção, consulte /SECTION
.
Você também pode especificar seções para dados inicializados (data_seg
), funções (code_seg
) e variáveis const (const_seg
).
Você pode usar o aplicativo DUMPBIN.EXE para exibir arquivos de objeto. Versões de DUMPBIN para cada arquitetura de destino com suporte estão incluídas no Visual Studio.
Exemplo
// 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() {
}