Freigeben über


managed, unmanaged

Aktivieren Sie die Steuerung auf Funktionsebene für Kompilierfunktionen als verwaltet oder nicht verwaltet.

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

Hinweise

Die /clr-Compileroption stellt eine Steuerung auf Modulebene für Kompilierfunktionen als verwaltet oder nicht verwaltet bereit.

Eine nicht verwaltete Funktion wird für die systemeigene Plattform kompiliert, und die Ausführung dieses Teils des Programms wird von der Common Language Runtime an die systemeigene Plattform übergeben.

Funktionen werden standardmäßig als verwaltet kompiliert, wenn /clr verwendet wird.

Beim Anwenden dieser Pragmas:

  • Fügen Sie das Pragma hinzu, das einer Funktion vorangeht, sich jedoch nicht innerhalb eines Funktionsrumpfs befindet.

  • Fügen Sie das Pragma nach #include-Anweisungen hinzu. Verwenden Sie diese Pragmas nicht vor #include-Anweisungen.

Der Compiler ignoriert die managed- und unmanaged-Pragmas, wenn /clr nicht in der Kompilierung verwendet wird.

Wenn eine Vorlagenfunktion instanziiert wird, bestimmt der Pragmazustand zum Zeitpunkt der Definition, ob die Vorlage verwaltet oder nicht verwaltet ist.

Weitere Informationen finden Sie unter Initialisierung gemischter Assemblys.

Beispiel

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

Siehe auch

Referenz

Pragma-Direktiven und das __Pragma-Schlüsselwort