C6214
警告 C6214: 意味の異なる整数型の間でのキャストです: HRESULT からブール型
この警告は、HRESULT が Boolean 型にキャストされることを示します。HRESULT の成功値 (S_OK) は 0 に等しくなります。ただし、ブール型の場合、0 はエラーを表します。HRESULT を Boolean 型にキャストしてからテスト式で使用すると、不適切な結果が生じます。場合によっては、HRESULT が Boolean 変数に格納されているときにこの警告が発生することがあります。Boolean 変数を比較に使用して HRESULT の成功または失敗をテストすると、不適切な結果が生じる可能性があります。
使用例
この警告が発生するコード例を次に示します。
#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;
}
}
この警告を解決するには、次のコードを使用します。
#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;
}
}
この警告では、SCODE 型は HRESULT と等価です。
通常、SUCCEEDED マクロまたは FAILED マクロは、HRESULT の値をテストするために使用されます。
詳細については、次のトピックを参照してください。