Aracılığıyla paylaş


C6221

C6221 Uyarı: anlam farklı tamsayı türleri arasındaki örtülü dönüþtürme: hresult tamsayı için karşılaştırma.BAŞARILI veya başarısız makrolar yerine kullanmayı düşünün

Bu uyarıyı belirten bir HRESULT sıfır dışında bir tamsayıya karşılaştırılması.Başarılı bir şekilde HRESULT (S_OK) 0 ile temsil edilir.Bu nedenle, örtülü bir oyuncu, bir HRESULT yanlış bir değer bir tamsayı oluşturur ve büyük bir olasılıkla yanlış bir sonuca yol.Genellikle bir işlev bekleniyor tarafından yanlışlıkla tamsayı gerçekten geri dönmek için neden olur bir HRESULT.

Örnek

Aşağıdaki kod, karşılaştırarak bu uyarısına neden olur HRESULT karşı bir tamsayı değeri:

#include <windows.h>

HRESULT f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  hr = CoGetMalloc(1, &pMalloc);
  if (hr == 4)
  {
    // failure code ...
    return S_FALSE;
  }
  else
  {
    // success code ...
    return S_OK;
  }
}

Aşağıdaki kod bu uyarıyı düzeltirken kullandığı FAILED makro:

#include <windows.h>

HRESULT f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  hr = CoGetMalloc(1, &pMalloc);
  if (FAILED(hr))
  {
    // failure code ...
    return S_FALSE;
  }
  else
  {
    // success code ...
    return S_OK;
  }
}

Bu uyarı için SCODE türü için eşdeğer HRESULT.

Daha fazla bilgi için bkz: Başarılı makro ve başarısız makro.