我正在查看一些C ++ / CLI代码,并且已经看到很多此类语句主要围绕#include
。他们的意思是什么?我知道他们,根据MSDN,Enable function-level control for compiling functions as managed or unmanaged.
但我对他们的内在机制感兴趣,特别是push
和pop
语义。如果有人可以解释这两个陈述中的任何一个是如何工作的,我会自己弄清楚另一个。
答案 0 :(得分:17)
#pragma managed(push, off)
将此行之后的代码的托管编译选项设置为off,并将其推送到先前处于活动状态的托管选项。
#pragma managed(pop)
从堆栈中恢复最后一个托管状态。这两行之间的代码编译为非托管。 pop行之后的代码使用与推送行之前相同的选项进行编译,无论是托管还是非托管。
答案 1 :(得分:1)
它告诉C ++编译器,当与/ clr开关一起使用时,在push和pop之间创建这些方法作为托管代码。
http://msdn.microsoft.com/en-us/library/0adb9zxe(v=vs.80).aspx