Teilen über


Compilerfehler C3821

„function“: ein verwalteter Typ oder eine verwaltete Funktion kann nicht in einer nicht verwalteten Funktion verwendet werden

Bemerkungen

Funktionen mit Inlineassembly oder Setjmp können keine Werttypen oder verwalteten Klassen enthalten. Um diesen Fehler zu beheben, entfernen Sie die Inlineassembly und setjmp oder entfernen Sie die verwalteten Objekte.

C3821 kann auch auftreten, wenn Sie versuchen, den automatischen Speicher in einer Vararg-Funktion zu verwenden. Weitere Informationen finden Sie unter Variable Argument Lists (...) (C++/CLI) und C++-Stapelsemantik für Referenztypen.

Beispiele

Im folgenden Beispiel wird C3821 generiert.

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

Im folgenden Beispiel wird C3821 generiert.

// 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