다음을 통해 공유


managedunmanagedpragma

함수 수준 제어를 사용하도록 설정하여 함수를 관리되거나 관리되지 않는 함수로 컴파일합니다.

구문

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

설명

/clr 컴파일러 옵션은 관리되거나 관리되지 않는 함수를 컴파일하기 위한 모듈 수준 제어를 제공합니다.

관리되지 않는 함수는 네이티브 플랫폼에 대해 컴파일됩니다. 프로그램의 해당 부분의 실행은 공용 언어 런타임에 의해 네이티브 플랫폼에 전달됩니다.

함수는 /clr이 사용되는 경우 기본적으로 관리되는 것으로 컴파일됩니다.

또는 unmanagedpragma다음을 적용하는 managed 경우:

  • 앞의 pragma 함수를 추가하지만 함수 본문 내에는 추가하지 않습니다.

  • pragma After #include 문을 추가합니다. 문 #include 앞에 사용하지 마세요.

컴파일러는 컴파일에서 managed 사용되지 않는 경우 /clrunmanagedpragma 해당 값을 무시합니다.

템플릿 함수가 인스턴스화 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 키워드