警告 C6214
意味的に異なる整数型間のキャスト: HRESULT からブール型
この警告は、HRESULT
が Boolean 型にキャストされることを示します。 S_OK
の成功値 (HRESULT
) は 0 に等しくなります。 ただし、ブール型の場合、0 はエラーを表します。 HRESULT
を Boolean 型にキャストしてからテスト式で使用すると、不適切な結果が生じます。
解説
場合によっては、HRESULT
が Boolean 変数に格納されているときにこの警告が発生することがあります。 Boolean 変数を比較に使用して HRESULT
の成功または失敗をテストすると、不適切な結果が生じる可能性があります。
コード分析名: CAST_HRESULT_TO_BOOL
例
次のコードでは、警告 C6214 が生成されます。
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if ((BOOL)hr) // warning C6214
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
この警告を解決するには、次のコードを使用します。
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
この警告では、SCODE
型は HRESULT
と等価です。
通常、SUCCEEDED
マクロまたは FAILED
マクロは、HRESULT
の値をテストするために使用されます。
詳細については、以下の記事のいずれかを参照してください。
最新の C++ メモリ割り当て手法を利用するには、C++ 標準ライブラリ (STL) によって提供されるメカニズムを使用します。 これらには、次unique_ptr
のようなvector
コンテナーが含まれますshared_ptr
。 詳細については、「スマート ポインター」および「C++ 標準ライブラリ」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示