managed
および unmanaged
pragma
関数をマネージドまたはアンマネージドとしてコンパイルするために関数レベルの制御を有効にします。
構文
#pragma managed
#pragma unmanaged
#pragma managed(
[push,
] {on
|off
})
#pragma managed(pop)
解説
/clr
コンパイラ オプションは、関数をマネージドまたはアンマネージドとしてコンパイルするためのモジュール レベルの制御を提供します。
アンマネージ関数は、ネイティブ プラットフォーム用にコンパイルされます。 プログラムのその部分の実行は、共通言語ランタイムによってネイティブ プラットフォームに渡されます。
関数は、/clr
が使用されると、既定でマネージドとしてコンパイルされます。
managed
または unmanaged
pragma を適用する場合:
関数の前にあり関数本体内にはない pragma を追加します。
#include
ステートメントの後に pragma を追加します。 任意の#include
ステートメントの前に使用しないでください。
コンパイラは、/clr
がコンパイルで使用されていない場合、managed
と unmanaged
pragma を無視します。
テンプレート関数がインスタンス化されると、テンプレートが定義されている pragma 状態によって、それがマネージドかアンマネージドかが決定されます。
詳細については、「混在アセンブリの初期化」を参照してください。
例
// pragma_directives_managed_unmanaged.cpp
// compile with: /clr
#include <stdio.h>
// func1 is managed
void func1() {
System::Console::WriteLine("In managed function.");
}
// #pragma unmanaged
// push managed state on to stack and set unmanaged state
#pragma managed(push, off)
// func2 is unmanaged
void func2() {
printf("In unmanaged function.\n");
}
// #pragma managed
#pragma managed(pop)
// main is managed
int main() {
func1();
func2();
}
In managed function.
In unmanaged function.