C6214
Uyarı C6214: anlamsal olarak farklı tamsayı türleri arasındaki atama: HRESULT'tan Boole türüne
Bu uyarı HRESULT 'ın bir Boolean türüne atandığını gösterir.HRESULT 'ın başarı değeri (S_OK) 0'a eşit.Ancak, 0 Boolean türü için başarısız olduğunu gösterir.HRESULT 'ı bir Boolean türüne dönüştürmek ve sonra o sonucu bir test ifadesinde kullanmak hatalı bir sonuç verir.Eğer HRESULT bir Boolean değişkende saklanıyorsa bazen bu hata ortaya çıkar.Boolean değişlenini kullanan bir karşılaştırma HRESULT için başarılı veya başarısız olarak yanlış sonuçlara neden olabilir.
Örnek
Aşağıdaki kod bu uyarıyı oluşturur:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if ((BOOL)hr) // warning 6214
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Bu uyarı düzeltmek için aşağıdaki kodu kullanın:
#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;
}
}
Bu uyarı için SCODE türü HRESULT ile eşdeğerdir.
Genellikle SUCCEEDED veya FAILED makroları HRESULT değerini test etmek için kullanılmalıdır.
Daha fazla bilgi için aşağıdaki konulardan birine bakın: