C6230
警告 C6230: 意味の異なる整数型の間の暗黙的なキャストです: HRESULT をブール値のコンテキストで使用しています。
この警告は、HRESULT が、それのみで if ステートメントなどブール型の結果が予測されるコンテキストで使用されていることを示します。これにより、正しい結果が得られない可能性があります。たとえば、HRESULT の通常の成功値 (S_OK) は、ブール型としてテストされた場合は失敗を意味します。
使用例
この警告が発生するコード例を次に示します。
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (hr)
{
// code ...
}
else
{
// code ...
}
}
ほとんどの場合、SUCCEEDED マクロまたは FAILED マクロは、HRESULT の値をテストするために使用します。この警告を解決するには、次のコードを使用します。
#include <windows.h>
VOID f( )
{
LPMALLOC pMalloc;
HRESULT hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// code ...
}
else
{
// code ...
}
}
この警告では、SCODE 型は HRESULT と等価です。