managedunmanagedpragma

啟用函式層級控制項,將函式編譯為 Managed 或 Unmanaged。

語法

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

備註

編譯 /clr 程式選項提供模組層級控制項,可將函式編譯為 Managed 或 Unmanaged。

Unmanaged 函式會針對原生平臺進行編譯。 執行該程式的部分將會由 Common Language Runtime 傳遞給原生平臺。

預設會在使用 /clr 時編譯 Unmanaged 函式。

managed 用 或 unmanagedpragma 時:

  • 新增上述 pragma 函式,但不在函式主體內。

  • pragma新增 after #include 語句。 請勿在任何語句之前 #include 使用它。

編譯器會 managed 忽略 , unmanagedpragma 如果在 /clr 編譯中未使用 ,則為 。

當範本函式具現化時, pragma 定義範本時的狀態會判斷其是否受管理或 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();
}
In managed function.
In unmanaged function.

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵字