次の方法で共有


コンパイラ エラー C3821

'function': マネージド型または関数は、アンマネージド関数で使用できません

インライン アセンブリまたは setjmp を使用する関数には、値の型またはマネージド クラスを含めることはできません。 このエラーを修正するには、インライン アセンブリと setjmp を削除するか、マネージド オブジェクトを削除します。

C3821 は、vararg 関数で自動ストレージを使用しようとした場合にも発生する可能性があります。 詳細については、「可変個引数リスト (...) (C++/CLI)」および「参照型の C++ スタック セマンティクス」を参照してください。

次の例では C3821 が生成されます。

// C3821a.cpp
// compile with: /clr /c
public ref struct R {};
void test1(...) {
   R r;   // C3821
}

次の例では C3821 が生成されます。

// C3821b.cpp
// compile with: /clr
// processor: /x86
ref class A {
   public:
   int i;
};

int main() {
   // cannot use managed classes in this function
   A ^a;

   __asm {
      nop
   }
} // C3821