Erreur du compilateur C3821
'function' : impossible d’utiliser un type ou une fonction managée dans une fonction non managée
Les fonctions avec un assembly inline ou setjmp ne peuvent pas contenir de types valeur ou de classes managées. Pour corriger cette erreur, supprimez l’assembly inline et setjmp
ou supprimez les objets managés.
C3821 peut également se produire si vous essayez d’utiliser le stockage automatique dans une fonction vararg. Pour plus d’informations, consultez Listes d’arguments variables (...) (C++/CLI) et sémantique de pile C++ pour les types de référence.
Exemples
L’exemple suivant génère l’erreur C3821.
// C3821a.cpp
// compile with: /clr /c
public ref struct R {};
void test1(...) {
R r; // C3821
}
L’exemple suivant génère l’erreur 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