共用方式為


managed, unmanaged

啟用函式層級編譯功能都與管理和未管理的控制項。

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

備註

/Clr 編譯器選項編譯函式做為管理和未管理提供模組層級的控制項。

Unmanaged 函式就會編譯為原生的平台,並執行該程式的一部分會由 common language runtime 傳遞至原生的平台。

函式會編譯,以及管理預設情況下當**/clr**用。

套用這些程式結合時,請使用下列指導方針:

  • 新增前一個函式的 pragma,但不是在函式主體。

  • 新增後的 pragma #include陳述式 (不使用這些程式之前的結合#include陳述式)。

編譯器會忽略managed和unmanaged pragma 如果**/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 關鍵字