Erreur du compilateur C2743
'type' : impossible d’intercepter un type natif avec __clrcall destructeur ou constructeur de copie
Un module compilé avec /clr a tenté d’intercepter une exception de type natif et où le destructeur ou le constructeur de copie du type utilise __clrcall
la convention d’appel.
Lorsqu’elle est compilée avec /clr, 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.
Pour plus d’informations, consultez l’article /clr (Compilation pour le Common Language Runtime).
Exemple
L’exemple suivant génère l’erreur C2743.
// C2743.cpp
// compile with: /clr
public struct S {
__clrcall ~S() {}
};
public struct T {
~T() {}
};
int main() {
try {}
catch(S) {} // C2743
// try the following line instead
// catch(T) {}
try {}
catch(S*) {} // OK
}