managed
和 unmanaged
pragma
啟用函式層級控件,將函式編譯為 Managed 或 Unmanaged。
語法
#pragma managed
#pragma unmanaged
#pragma managed(
[push,
] {on
|off
})
#pragma managed(pop)
備註
編譯 /clr
程式選項提供模組層級控件,可將函式編譯為Managed或 Unmanaged。
Unmanaged 函式會針對原生平台進行編譯。 執行該程式的部分將會由 Common Language Runtime 傳遞給原生平臺。
預設會在使用 /clr
時編譯 Unmanaged 函式。
套 managed
用 或 unmanaged
pragma時:
新增上述 pragma 函式,但不在函式主體內。
pragma新增 after
#include
語句。 請勿在任何語句之前#include
使用它。
編譯程式會 managed
忽略 , unmanaged
pragma 如果在 /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.