Avviso C6215
Eseguire il cast tra tipi integer semanticamente diversi: un tipo booleano a HRESULT
Questo avviso indica che viene eseguito il cast di un valore booleano a un oggetto HRESULT
. I tipi booleani indicano l'esito positivo da un valore diverso da zero, mentre l'esito positivo (S_OK
) in HRESULT
è indicato da un valore pari a 0. Eseguire il cast di un tipo booleano in un oggetto HRESULT
e quindi usarlo in un'espressione di test restituirà un risultato non corretto.
Osservazioni:
Questo avviso si verifica spesso quando un valore booleano viene utilizzato come argomento a SUCCEEDED
o FAILED
macro, che esegue il cast esplicito dei relativi argomenti a un oggetto HRESULT
.
Nome dell'analisi del codice: CAST_BOOL_TO_HRESULT
Esempio
Il codice seguente genera questo avviso:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
void f( REFGUID riid1, REFGUID riid2 )
{
if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning C6215
{
// success code ...
}
else
{
// failure code ...
}
}
In genere, le SUCCEEDED
macro o FAILED
devono essere applicate solo a HRESULT
.
Per correggere questo avviso, usare il codice seguente:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
void f( REFGUID riid1, REFGUID riid2 )
{
if (IsEqual( riid1, riid2 ) == TRUE)
{
// code for riid1 == riid2
}
else
{
// code for riid1 != riid2
}
}
Per altre informazioni, vedere Macro SUCC edizione Enterprise DED e macro FAILED
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per