managed, unmanaged
コンパイル用の関数レベルのコントロールはマネージとしてまたはアンマネージ機能します。
#pragma managed
#pragma unmanaged
#pragma managed([push,] on | off)
#pragma managed(pop)
解説
/clr コンパイラ オプションはマネージとして関数をコンパイルするレベルをコントロールまたはアンマネージ提供します。
アンマネージ関数はネイティブ プラットフォーム用にコンパイルされプログラムのその部分の実行は共通言語ランタイムがネイティブ プラットフォームに渡されます。
関数はマネージとして /clr を使用すると既定でコンパイルされます。
これらのプラグマを適用する場合は次のガイドラインを使用する :
関数本体の関数に前のプラグマを追加します。
#include のステートメントの後にはプラグマを追加します (#include のステートメントの前に次のプラグマは使用されません。
コンパイラは /clr がコンパイルに使用する managed と unmanaged のプラグマは無視されます。
関数テンプレートをインスタンス化するときにテンプレートの定義時のプラグマの状態はマネージまたはアンマネージかどうかを判定します。
詳細については、「混在アセンブリの初期化」を参照してください。
使用例
// 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();
}