managed и unmanagedpragma

Включите элемент управления уровня функций для компиляции функций как управляемых или неуправляемых.

Синтаксис

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

Замечания

Параметр /clr компилятора предоставляет управление уровнем модуля для функций компиляции как управляемых, так и неуправляемых.

Неуправляемая функция компилируется для собственной платформы. Выполнение этой части программы передается на собственную платформу средой CLR.

При использовании параметра /clr по умолчанию функции компилируются как управляемые.

При применении или managedunmanagedpragma:

  • Добавьте предыдущую pragma функцию, но не в тексте функции.

  • Добавьте инструкции pragma after #include . Не используйте его до каких-либо #include инструкций.

Компилятор игнорирует и managedunmanagedpragma , если /clr в компиляции не используется.

При создании экземпляра функции шаблона состояние при определении шаблона определяет, pragma управляется ли он или неуправляем.

Дополнительные сведения см. в разделе инициализация смешанных сборок.

Пример

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

См. также

Директивы Pragma и __pragma_Pragma ключевое слово