コンパイラ エラー 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