Compilerfehler C3821
"Funktion": Verwalteter Typ oder verwaltete Funktion kann nicht in einer nicht verwalteten Funktion verwendet werden.
Funktionen mit Inline-Assembly oder setjmp dürfen keine Werttypen oder verwalteten Klassen enthalten. Entfernen Sie die Inline-Assembly, oder entfernen Sie die verwalteten Objekte, um setjmp
diesen Fehler zu beheben.
C3821 kann auch auftreten, wenn Sie versuchen, den automatischen Speicher in einer fgrg-Funktion zu verwenden. Weitere Informationen finden Sie unter Variablenargumentlisten (...) (C++/CLI) und C++-Stapelsemantik für Verweistypen.
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