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

См. также

Ссылки

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