Share via


code_seg pragma

Especifica a seção de texto (segmento) onde as funções são armazenadas no arquivo objeto (.obj).

Sintaxe

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

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 torna o nome da seção de texto ativo após o pop.

identifier
(Opcional) Quando usado com push, atribui um nome ao registro na pilha interna do compilador. Quando usado com pop, a diretiva remove registros da pilha interna até que o identificador seja removido. Se o identificador não for encontrado na pilha interna, nada será exibido.

"section-name"
(Opcional) O nome de uma seção. Quando usada com pop, a pilha é exibida e section-name se torna o nome da seção de texto ativo.

"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 texto é uma seção que contém código executável. Neste artigo, os termos segmento e seção têm o mesmo significado.

A diretiva de code_segpragma informa ao compilador para colocar todos os códigos de objeto subsequentes da unidade de tradução em uma seção de texto chamada section-name. Por padrão, a seção de texto usada para funções em um arquivo de objeto é denominado .text. Uma diretiva code_segpragma sem um parâmetro section-name redefine o nome da seção de texto para o código de objeto subsequente para .text.

A diretiva code_segpragma não controla o posicionamento do código de objeto gerado para modelos instanciados. Também não controla o código gerado implicitamente pelo compilador, como funções de membro especiais. Para controlar esse código, recomendamos que você use o atributo __declspec(code_seg(...)). Ele fornece controle sobre o posicionamento de todo o código de objeto, incluindo o código gerado pelo compilador.

Para uma lista de nomes que não devem ser usados para criar uma seção, confira /SECTION.

Você também pode especificar seções para dados inicializados (data_seg), dados não inicializados (bss_seg) e variáveis const (const_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

Este exemplo mostra como usar a diretiva de code_segpragma para controlar onde o código de objeto será colocado:

// pragma_directive_code_seg.cpp
void func1() {                  // stored in .text
}

#pragma code_seg(".my_data1")
void func2() {                  // stored in my_data1
}

#pragma code_seg(push, r1, ".my_data2")
void func3() {                  // stored in my_data2
}

#pragma code_seg(pop, r1)      // stored in my_data1
void func4() {
}

int main() {
}

Confira também

code_seg (__declspec)
Diretivas do Pragma e as palavras-chave do __pragma e _Pragma