Avviso C6214
Eseguire il cast tra tipi integer semanticamente diversi: HRESULT a un tipo booleano
Questo avviso indica che viene eseguito il cast di un oggetto HRESULT
a un tipo booleano. Valore di esito positivo (S_OK
) di un valore HRESULT
uguale a 0. Tuttavia, 0 indica un errore per un tipo booleano. Eseguire il cast di un oggetto HRESULT
in un tipo booleano e quindi usarlo in un'espressione di test genererà un risultato non corretto.
Osservazioni:
In alcuni casi, questo avviso si verifica se un HRESULT
oggetto viene archiviato in una variabile booleana. Qualsiasi confronto che usa la variabile booleana per verificare l'esito HRESULT
positivo o negativo potrebbe causare risultati non corretti.
Nome dell'analisi del codice: CAST_HRESULT_TO_BOOL
Esempio
Il codice seguente genera l'avviso C6214:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if ((BOOL)hr) // warning C6214
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Per correggere questo avviso, usare il codice seguente:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Per questo avviso, il SCODE
tipo è equivalente a HRESULT
.
In genere, la SUCCEEDED
macro o FAILED
deve essere usata per testare il valore di un oggetto HRESULT
.
Per altre informazioni, vedere uno degli articoli seguenti:
Per usare la metodologia di allocazione di memoria C++ moderna, usare i meccanismi forniti dalla libreria standard C++ (STL). Sono inclusi shared_ptr
i contenitori , e , unique_ptr
ad esempio vector
. Per altre informazioni, vedere Puntatori intelligenti e libreria standard C++.
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