Błąd kompilatora C3821

"function": nie można używać typu zarządzanego lub funkcji w funkcji niezarządzanej

Funkcje z wbudowanym zestawem lub zestawem nie mogą zawierać typów wartości ani klas zarządzanych. Aby naprawić ten błąd, usuń wbudowany zestaw i setjmp usuń obiekty zarządzane.

C3821 może również wystąpić, jeśli spróbujesz użyć automatycznego magazynu w funkcji vararg. Aby uzyskać więcej informacji, zobacz Zmienne listy argumentów (...) (C++/CLI) i Semantyka stosu C++ dla typów odwołań.

Przykłady

Poniższy przykład generuje C3821.

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

Poniższy przykład generuje 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