managed, unmanaged
启用生成功能的功能级别中的控件为托管或非托管数组。
#pragma managed
#pragma unmanaged
#pragma managed([push,] on | off)
#pragma managed(pop)
备注
/clr 编译器选项用于生成功能提供模块级的控件或者为托管或非托管数组。
非托管函数用于本机平台进行编译,并且,程序的该部分的执行将传递给本机平台在公共语言运行时。
默认情况下,当使用时,函数编译为托管 /clr 。
请遵循以下准则,在将这些说明时:
添加前面一个功能,但不在函数体内的说明。
在 #include 语句后添加注释 (不要在 #include 语句之前使用这些说明)。
,如果 /clr 不用于生成,编译器忽略 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();
}