次の方法で共有


警告 C6215

意味的に異なる整数型間のキャスト: ブール型から HRESULT へのキャスト

この警告は、ブール型 が HRESULT にキャストされることを示します。 ブール型は 0 以外の値で成功を示します。HRESULT の成功値 (S_OK) は値 0 によって示されます。 ブール型を HRESULT にキャストしてからテスト式で使用すると、不適切な結果が生じます。

解説

この警告は、ブール型が SUCCEEDED の引数または FAILED マクロとして使用された場合によく発生します。このブール型は、HRESULT の引数を明示的にキャストします。

コード分析名: CAST_BOOL_TO_HRESULT

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

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning C6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

通常、SUCCEEDED マクロまたは FAILED マクロは HRESULT にのみ適用する必要があります。

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

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

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE)
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

詳細については、「SUCCEEDED マクロ」および「FAILED マクロ」をご覧ください