Dela via


managed och unmanagedpragma

Aktivera kontroll på funktionsnivå för att kompilera funktioner som hanterade eller ohanterade.

Syntax

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

Anmärkningar

Alternativet /clr kompilator ger kontroll på modulnivå för kompilering av funktioner antingen som hanterade eller ohanterade.

En ohanterad funktion kompileras för den interna plattformen. Körningen av den delen av programmet skickas till den interna plattformen av den gemensamma språkkörningen.

Funktioner kompileras som hanterade som standard när /clr används.

När du använder en managed eller unmanagedpragma:

  • Lägg till pragma före en funktion, men inte i en funktionstext.

  • Lägg till pragma efter #include-instruktioner. Använd den inte före några #include-instruktioner.

Kompilatorn ignorerar managed och unmanagedpragma om /clr inte används i kompilering.

När en mallfunktion instansieras avgör pragma tillstånd när mallen definieras om den hanteras eller hanteras ohanterad.

Mer information finns i Initiering av blandade sammansättningar.

Exempel

// 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.

Se även

Pragma-direktiv och nyckelorden __pragma och _Pragma