次の方法で共有


managed および unmanagedpragma

関数をマネージドまたはアンマネージドとしてコンパイルするために関数レベルの制御を有効にします。

構文

#pragma managed
#pragma unmanaged
#pragma managed( [ push, ] { on | off } )
#pragma managed(pop)

解説

/clr コンパイラ オプションは、関数をマネージドまたはアンマネージドとしてコンパイルするためのモジュール レベルの制御を提供します。

アンマネージ関数は、ネイティブ プラットフォーム用にコンパイルされます。 プログラムのその部分の実行は、共通言語ランタイムによってネイティブ プラットフォームに渡されます。

関数は、/clr が使用されると、既定でマネージドとしてコンパイルされます。

managed または unmanagedpragma を適用する場合:

  • 関数の前にあり関数本体内にはない pragma を追加します。

  • #include ステートメントの後に pragma を追加します。 任意の #include ステートメントの前に使用しないでください。

コンパイラは、/clr がコンパイルで使用されていない場合、managedunmanagedpragma を無視します。

テンプレート関数がインスタンス化されると、テンプレートが定義されている 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.

関連項目

Pragma ディレクティブと __pragma キーワードと _Pragma キーワード