Błąd kompilatora C3821Compiler Error C3821

"Function": typ zarządzany lub funkcja nie może być użyta w funkcji niezarządzanej'function': managed type or function cannot be used in an unmanaged function

Funkcje z zestawem wbudowanym lub setjmp nie mogą zawierać typów wartości ani klas zarządzanych.Functions with inline assembly or setjmp cannot contain value types or managed classes. Aby naprawić ten błąd, Usuń Wbudowany zestaw i setjmp lub Usuń obiekty zarządzane.To fix this error, remove the inline assembly and setjmp or remove the managed objects.

C3821 może również wystąpić, jeśli spróbujesz użyć automatycznego magazynu w funkcji vararg.C3821 can also occur if you try to use automatic storage in a vararg function. Aby uzyskać więcej informacji, zobacz listę zmiennych argumentów (...) (c++/CLI) i semantykę stosu C++ dla typów referencyjnych.For more information, see Variable Argument Lists (...) (C++/CLI) and C++ Stack Semantics for Reference Types.

PrzykładyExamples

Poniższy przykład generuje C3821.The following sample generates C3821.

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

Poniższy przykład generuje C3821.The following sample generates 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