C6215
警告 C6215: 意味の異なる整数型の間でのキャストです: ブール型から HRESULT
この警告は、ブール型が HRESULT にキャストされることを示します。 ブール型は 0 以外の値で成功を示します。一方、HRESULT の成功値 (S_OK) は値 0 によって示されます。 HRESULT を Boolean 型にキャストしてからテスト式で使用すると、不適切な結果が生じます。
多くの場合、引数が明示的に HRESULT にキャストされる、SUCCEEDED マクロまたは FAILED マクロの引数として ブール型を使用すると、この警告が発生します。
使用例
この警告が発生するコード例を次に示します。
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
void f( REFGUID riid1, REFGUID riid2 )
{
if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
{
// 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 Macro (SUCCEEDED マクロ)」および「FAILED Macro (FAILED マクロ)」を参照してください。