Partager via


managed, unmanaged

Activez le contrôle au niveau de les fonctions pour compiler des fonctions comme managé ou non managé.

#pragma managed
#pragma unmanaged
#pragma managed([push,] on | off)
#pragma managed(pop)

Notes

L'option du compilateur de /clr fournit le contrôle de niveau module pour compiler des fonctions comme managé ou non managé.

Une fonction non managée sera compilée pour la plateforme native, et l'exécution de cette partie du programme est passée à la plateforme native par le common langage runtime.

Les fonctions sont compilées comme gérées par défaut lorsque /clr est utilisé.

utilisez les indications suivantes en appliquant ces pragmas :

  • Ajoutez le pragma en faisant précéder une fonction mais pas dans un corps de la fonction.

  • Ajoutez le pragma après les instructions d' #include (n'utilisez pas les pragmas avant les instructions d' #include ).

le compilateur ignore les pragmas d' managed et d' unmanaged si /clr n'est pas utilisé dans la compilation.

Lorsqu'une fonction de modèle est instanciée, l'état pragma au moment de la définition du modèle détermine s'il est managé ou non managé.

Pour plus d'informations, consultez Initialisation d'assemblys mixtes.

Exemple

// 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();
}
  
  

Voir aussi

Référence

Directives pragma et le mot clé de __Pragma