Avertissement C6226
Conversion implicite entre des types entiers sémantiquement différents : affectation de -1 à HRESULT. Envisagez plutôt d’utiliser E_FAIL.
Cet avertissement indique qu’une HRESULT
valeur explicite est affectée ou initialisée à -1.
Notes
Cet avertissement est fréquemment provoqué par une confusion accidentelle d’entiers et HRESULT
de types. Pour indiquer la réussite, utilisez plutôt la constante S_OK
symbolique. Pour indiquer l’échec, utilisez les constantes symboliques qui commencent par E_constant, telles que E_FAIL
.
Pour plus d’informations, consultez les macros et FAILED
les SUCCEEDED
macros.
Nom de l’analyse du code : ASSIGNING_MINUS_ONE_TO_HRESULT
Exemple
Le code suivant génère cet avertissement :
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = -1;
// code ...
}
else
{
// code ...
}
}
Pour corriger cet avertissement, utilisez le code suivant :
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = E_FAIL;
// code ...
}
else
{
// code ...
}
}
Pour cet avertissement, le SCODE
type est traité comme un HRESULT
.
L’utilisation et malloc
free
(et les API de mémoire dynamique associées) présente de nombreux pièges comme cause de fuites de mémoire et d’exceptions. Pour éviter ces types de fuites et problèmes d’exception, utilisez les classes de pointeur et de conteneur fournies par la bibliothèque standard C++. Il s’agit notamment de shared_ptr, de unique_ptr et de vecteur. Pour plus d’informations, consultez Smart Pointers and C++ Standard Library.
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