Aracılığıyla paylaş


C6219

C6219 Uyarı: anlam farklı tamsayı türleri arasındaki örtülü dönüþtürme: 1 ya da doğru hresult karşılaştırma.Kullanmayı başarılı veya başarısız makro yerine

Bu uyarıyı belirten bir HRESULT açık bir ile olmayan karşılaştırıldığını-HRESULT bir (1) değeri.Çünkü yanlış sonuçlara neden olasıdır tipik başarı değeri HRESULT (S_OK) 0; bir Boolean türüne karşılaştırma örtülü olarak onu false değerine dönüştürür.

Örnek

Bu uyarı için aşağıdaki kod üretir CoGetMalloc döndüren bir HRESULT, hangi then karşılaştırması TRUE:

#include <windows.h>

void f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  
  if (hr == TRUE)
  {
    // success code ...
  }
  else
  {
    // failure code   
  }
}

Çoğu zaman, yanlışlıkla sınama koduna göre bu uyarıyı neden bir HRESULT karşı bir Boole değeri.Kullanmak genellikle en iyi SUCCEEDED veya FAILED makrolar değerini test etmek için bir HRESULT.Bu uyarı düzeltmek için şu kodu kullanın:

#include <windows.h>

void f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  
  if (SUCCEEDED(hr))
  {
    // success code ...
  }
  else
  {
    // failure code   
  }
}

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