managed、unmanaged
啟用函式層級控制項,用於編譯 Managed 或 Unmanaged 的函式。
#pragma managed #pragma unmanaged #pragma managed([push,] on | off) #pragma managed(pop)
備註
/clr 編譯器選項提供模組層級的控制項,可用於編譯 Managed 或 Unmanaged 的函式。
編譯 Unmanaged 函式用於原生平台,Common Language Runtime 會將該部分的程式執行傳遞至該原生平台。
預設會在使用 /clr 時編譯 Unmanaged 函式。
套用這些 pragma 時:
將 pragma 新增到函式之前而不是函式主體之內。
將 pragma 新增到 #include 陳述式之後。 請勿在 #include 陳述式之前使用這些 pragma。
如果編譯時未使用 /clr,編譯器會忽略 managed 和 unmanaged pragma。
具現化樣板函式時,定義樣板時的 pragma 狀態決定函式為 Managed 或 Unmanaged 函式。
如需詳細資訊,請參閱混合組件的初始化。
範例
// 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();
}