"#pragma managed(push,off)"和"#pragma managed(pop)"的含义是什么意思?

use*_*947 12 .net c++ interop command-line-interface

我正在查看一些C++/CLI代码,并且已经看到很多这样的语句主要是围绕#includes.他们的意思是什么?我知道他们,根据MSDN,Enable function-level control for compiling functions as managed or unmanaged.但我感兴趣的是他们内心力学尤其是pushpop语义.如果有人可以解释这两个陈述中的任何一个是如何工作的,我会自己弄清楚另一个.

Ale*_*x F 18

#pragma managed(push, off)

将此行之后的代码的托管编译选项设置为off,并将其推送到先前处于活动状态的托管选项的堆栈.

#pragma managed(pop)

从堆栈中恢复最后一个托管状态.这两行之间的代码编译为非托管.pop行之后的代码使用与推送行之前相同的选项进行编译,无论是托管还是非托管.