managed, unmanaged
Позволяет на уровне функций контролировать режим их компиляции: с управляемым или неуправляемым кодом.
#pragma managed #pragma unmanaged #pragma managed([push,] on | off) #pragma managed(pop)
Заметки
Параметр компилятора /clr позволяет управлять режимом компиляции функций (управляемый или неуправляемый код) на уровне модуля.
Неуправляемая функция компилируется для собственной платформы, и среда CLR передает выполнение этой части программы в собственную платформу.
При использовании параметра /clr по умолчанию функции компилируются как управляемые.
При применении этих директив pragma выполните следующие действия.
Добавляйте директиву #pragma перед функцией, а не в теле функции.
Добавьте директиву pragma после операторов #include. Не используйте эти директивы pragma перед операторами #include.
Компилятор игнорирует директивы #pragma managed и unmanaged, если при компиляции не используется параметр /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();
}