次の方法で共有


C6225

警告 C6225: 意味の異なる整数型の間の暗黙的なキャストです: 1 または TRUE を HRESULT に割り当てています。S_FALSE を代わりに使用してください。

この警告は、HRESULT が明示的な値 1 によって代入または初期化されることを示します。ブール型は 0 以外の値で成功を示します。HRESULT の成功値 (S_OK) は値 0 によって示されます。この警告は、多くの場合、ブール型と HRESULT 型が不適切に使用された場合に発生します。成功を示すには、記号定数 S_OK を使用してください。

使用例

次のコードでは、HRESULT の代入によってこの警告が発生します。

#include <windows.h>

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

この警告を解決するには、次のコードを使用します。

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
  {
    hr = S_OK;
    // code ...
  }
  else
  {
    hr = S_FALSE;
    // code ...
  }
}

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

失敗を示すには、E_FAIL など別の定数を使用してください。

詳細については、次のトピックを参照してください。

SUCCEEDED (SUCCEEDED マクロ)

FAILED (FAILED マクロ)