Advertencia C6214
Conversión entre tipos enteros semánticamente diferentes: HRESULT a un tipo booleano
Esta advertencia indica que un HRESULT
se convierte a un tipo booleano. El valor correcto (S_OK
) de HRESULT
es igual a 0. Sin embargo, 0 indica error en un tipo booleano. Convertir un HRESULT
en un tipo booleano y utilizarlo en una expresión de prueba da lugar a un resultado incorrecto.
Comentarios
A veces, esta advertencia se produce cuando se almacena un HRESULT
en una variable booleana. Cualquier comparación que utilice la variable booleana para comprobar si HRESULT
es correcto o devuelve un error puede provocar resultados incorrectos.
Nombre del análisis de código: CAST_HRESULT_TO_BOOL
Ejemplo
El código siguiente genera la advertencia 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;
}
}
Para corregir esta advertencia, utilice el código siguiente:
#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;
}
}
Para esta advertencia, el tipo SCODE
es equivalente a HRESULT
.
Normalmente, se debe utilizar la macro SUCCEEDED
o FAILED
para probar el valor de un HRESULT
.
Para obtener más información, vea uno de los artículos siguientes:
Para usar la metodología moderna de asignación de memoria de C++, use los mecanismos proporcionados por la biblioteca estándar (STL) de C++. Entre ellos se incluyen shared_ptr
los contenedores , unique_ptr
y , como vector
. Para más información, consulte los artículos sobre punteros inteligentes y la biblioteca estándar de C++.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de