Я рассматриваю код С++/CLI и видел много таких утверждений, в основном вокруг #include
s. Что они имеют в виду? Я знаю, что они, согласно MSDN, Enable function-level control for compiling functions as managed or unmanaged.
Но меня интересует их внутренняя механика, особенно семантика push
и pop
. Если кто-то может объяснить, как работает одно из двух утверждений, я сам выясню его.
Что означают утверждения "#pragma managed (push, off)" и "#pragma managed (pop)"?
Ответ 1
#pragma managed(push, off)
Устанавливает параметр управляемой компиляции в код после этой строки, чтобы отключиться, и подталкивает к ранее активированному параметру стека.
#pragma managed(pop)
Восстанавливает последнее управляемое состояние из стека. Код между этими двумя строками компилируется как неуправляемый. Код после поп-строки скомпилирован с той же опцией, что и перед точной строкой, независимо от того, было ли это управляемо или неуправляемо.
Ответ 2
Он сообщает компилятору С++ при использовании с/clr-переключателем для создания этих методов между push и pop как управляемый код.
http://msdn.microsoft.com/en-us/library/0adb9zxe(v=vs.80).aspx