Dot-Net

語句“#pragma managed(push, off)”和“#pragma managed(pop)”是什麼意思?

  • January 31, 2011

我正在查看一些 C++/CLI 程式碼,並且看到了很多這樣的語句,主要是圍繞#includes. 他們的意思是什麼?根據 MSDN,我知道他們,Enable function-level control for compiling functions as managed or unmanaged.但我對他們的內部機制感興趣,尤其是pushpop語義。如果有人能解釋這兩種說法中的任何一種是如何工作的,我會自己弄清楚另一種。

#pragma 管理(推,關)

將此行之後的程式碼的託管編譯選項設置為關閉,並將先前活動的託管選項推送到堆棧。

#pragma managed(pop)

從堆棧中恢復上一個託管狀態。這兩行之間的程式碼被編譯為非託管的。pop 行之後的程式碼使用與 push 行之前相同的選項進行編譯,無論它是託管的還是非託管的。

當與 /clr 開關一起使用時,它告訴 C++ 編譯器在 push 和 pop 之間創建這些方法作為託管程式碼。

http://msdn.microsoft.com/en-us/library/0adb9zxe(v=vs.80).aspx

引用自:https://stackoverflow.com/questions/4850345