managed
e unmanaged
pragma
Habilita o controle do nível da função para compilar funções como gerenciadas ou não gerenciadas.
Sintaxe
#pragma managed
#pragma unmanaged
#pragma managed(
push,
[ ] { |on
off
})
#pragma managed(pop)
Comentários
A opção do compilador /clr
fornece controle do nível do módulo para compilar funções ou como gerenciada ou não gerenciada.
Uma função não gerenciada é compilada para a plataforma nativa. A execução dessa parte do programa será passada para a plataforma nativa pelo Common Language Runtime.
As funções são criadas como gerenciadas por padrão quando /clr
é usado.
Ao aplicar um managed
ou unmanaged
pragma:
Adicione o pragma que precede uma função mas não em um corpo da função.
Adicione pragma após as instruções
#include
. Não o use antes de nenhuma instrução#include
.
O compilador ignorará managed
e unmanaged
pragma se /clr
não for usado na compilação.
Quando uma função de modelo é instanciada, o estado de pragma no momento da definição do modelo determina se ela é gerenciada ou não gerenciada.
Para obter mais informações, consulte Inicialização de assemblies mistos.
Exemplo
// pragma_directives_managed_unmanaged.cpp
// compile with: /clr
#include <stdio.h>
// func1 is managed
void func1() {
System::Console::WriteLine("In managed function.");
}
// #pragma unmanaged
// push managed state on to stack and set unmanaged state
#pragma managed(push, off)
// func2 is unmanaged
void func2() {
printf("In unmanaged function.\n");
}
// #pragma managed
#pragma managed(pop)
// main is managed
int main() {
func1();
func2();
}
In managed function.
In unmanaged function.