次の方法で共有


C6219

警告 C6219: 意味の異なる整数型の間の暗黙的なキャストです: HRESULT を 1 または TRUE と比較しています。 代わりに、SUCCEEDED マクロまたは FAILED マクロを使用してください。

この警告は、HRESULT 以外の明示的な値 1 と HRESULT が比較されていることを示します。 HRESULT の一般的な成功値 (S_OK) は 0 であり、これをブール型と比較すると暗黙的に false に変換されるため、正しい結果が得られない可能性があります。

使用例

次に示すコードでは、CoGetMalloc によって HRESULT が返され、それが TRUE と比較されるため、この警告が生成されます。

#include <windows.h>

void f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  
  if (hr == TRUE)
  {
    // success code ...
  }
  else
  {
    // failure code   
  }
}

ほとんどの場合、この警告はコード内で HRESULT を誤ってブール型に対してテストすることが原因で発生します。 一般的には、SUCCEEDED マクロまたは FAILED マクロを使用して HRESULT の値をテストすることをお勧めします。 この警告を解決するには、次のコードを使用します。

#include <windows.h>

void f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  
  if (SUCCEEDED(hr))
  {
    // success code ...
  }
  else
  {
    // failure code   
  }
}

この警告では、SCODE 型は HRESULT と等価です。