次の方法で共有


C6216

警告 C6216: 意味の異なる整数型の間でのコンパイラ挿入されたキャストです: ブール型から HRESULT

この警告は、ブール型が明示的にキャストされずに HRESULT として使用されることを示しています。 ブール型は 0 以外の値で成功を示します。HRESULT の成功値 (S_OK) は値 0 によって示されます。 ブール値 false を返す関数で一般的な失敗を表す値が、HRESULT としてテストされたときに成功状態を表すことになります。 これにより、正しい結果が得られない可能性があります。

使用例

この警告が発生するコード例を次に示します。

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // code ...
  return IsEqual(riid1, riid2);  
}

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

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual(riid1, riid2) == TRUE)
  {
    // code ...
    return S_OK;
  }
  else
  {
    // code ...
    return E_FAIL;
  }
}

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

詳細については、「SUCCEEDED Macro (SUCCEEDED マクロ)」および「FAILED Macro (FAILED マクロ)」を参照してください。