managed
e unmanaged
pragma
Abilitare il controllo a livello di funzione per compilare le funzioni come gestite o non gestite.
Sintassi
#pragma managed
#pragma unmanaged
#pragma managed(
[push,
] {on
|off
})
#pragma managed(pop)
Osservazioni:
L'opzione /clr
del compilatore fornisce il controllo a livello di modulo per la compilazione di funzioni come gestite o non gestite.
Una funzione non gestita viene compilata per la piattaforma nativa. L'esecuzione di tale parte del programma verrà passata alla piattaforma nativa da Common Language Runtime.
Le funzioni vengono compilate come gestite per impostazione predefinita quando /clr
viene usato.
Quando si applica un managed
oggetto o unmanaged
pragma:
Aggiungere la pragma funzione precedente, ma non all'interno di un corpo della funzione.
Aggiungere le pragma istruzioni after
#include
. Non usarlo prima di alcuna#include
istruzione.
Il compilatore ignora e managed
unmanaged
pragma se /clr
non viene usato nella compilazione.
Quando viene creata un'istanza di una funzione modello, lo pragma stato quando viene definito il modello determina se è gestito o non gestito.
Per altre informazioni, vedere Inizializzazione di assembly misti.
Esempio
// 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.