section
pragma
Cria uma seção em um arquivo OBJ.
Sintaxe
#pragma section( "
nome da seção"
[,
atributos ])
Comentários
Os termos segmento e seção têm o mesmo significado neste artigo.
Uma vez que uma seção é definida, ela permanece válida para o resto da compilação. No entanto, você deve usar __declspec(allocate)
, ou nada é colocado na seção.
de nome de seção é um parâmetro obrigatório que se torna o nome da seção. O nome não deve entrar em conflito com nenhum nome de seção padrão. Consulte /SECTION
para obter uma lista de nomes que você não deve usar ao criar uma seção.
atributos é um parâmetro opcional que consiste em um ou mais atributos separados por vírgulas para atribuir à seção. Possíveis atributos são:
Atributo | Descrição |
---|---|
read |
Permite operações de leitura em dados. |
write |
Permite operações de gravação em dados. |
execute |
Permite que o código seja executado. |
shared |
Compartilha a seção entre todos os processos que carregam a imagem. |
nopage |
Marca a seção como não paginável. Útil para drivers de dispositivo Win32. |
nocache |
Marca a seção como não armazenável em cache. Útil para drivers de dispositivo Win32. |
discard |
Marca a seção como descartável. Útil para drivers de dispositivo Win32. |
remove |
Marca a seção como não residente na memória. Apenas para controladores de dispositivos virtuais (VxD). |
Se você não especificar nenhum atributo, a seção terá read
e write
atributos.
Exemplo
Neste exemplo, a primeira seção pragma identifica a seção e seus atributos. O j
inteiro não é colocado em mysec
porque não foi declarado usando __declspec(allocate)
. Em vez disso, j
vai para a seção de dados. O i
inteiro entra em mysec
devido ao seu atributo de classe de armazenamento __declspec(allocate)
.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}