在修改一个bug的过程中,发现问题出在这个里面。以前没有使用过这个,并不了解其具体的用途,所以查阅了msdn下。
简单说,这个宏就是用来控制函数是用managed还是unmanaged来编译。具体说就是
#ifdef _MANAGED
#pragma managed(push, off) //关闭managed
#endif
…..
在这里面的所以function都会调用native的平台来编译与运行
…..
#ifdef _MANAGED
#pragma managed(pop) //打开managed
#endif
需要注意的是只有/clr编译选项使用时,这种用法才成立,否则编译器讲忽略managed和unmanaged标记。
至于为什么要这么用,我想是为了提高编译和运行效率吧,毕竟把不需要managed。
MSDN:http://msdn.microsoft.com/en-us/library/0adb9zxe(v=vs.80).aspx