Avertissement du compilateur (niveau 1) C4382
lève 'type' : un type avec __clrcall destructeur ou constructeur de copie ne peut être intercepté que dans /clr :pure module
Notes
L’option /clr :pure compiler est déconseillée dans Visual Studio 2015 et non prise en charge dans Visual Studio 2017.
Lorsqu’elle est compilée avec /clr (pas /clr :pure), la gestion des exceptions s’attend à ce que les fonctions membres d’un type natif soient __cdecl et non __clrcall. Les types natifs avec des fonctions membres utilisant __clrcall
la convention d’appel ne peuvent pas être interceptés dans un module compilé avec /clr.
Si l’exception est interceptée dans un module compilé avec /clr :pure, vous pouvez ignorer cet avertissement.
Pour plus d’informations, consultez l’article /clr (Compilation pour le Common Language Runtime).
Exemple
L’exemple suivant génère l’erreur C4382.
// C4382.cpp
// compile with: /clr /W1 /c
struct S {
__clrcall ~S() {}
};
struct T {
~T() {}
};
int main() {
S s;
throw s; // C4382
S * ps = &s;
throw ps; // OK
T t;
throw t; // OK
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour