Aracılığıyla paylaş


C6214

Uyarı C6214: anlamsal olarak farklı tamsayı türleri arasındaki atama: HRESULT'tan Boole türüne

Bu uyarı HRESULT 'ın bir Boolean türüne atandığını gösterir.HRESULT 'ın başarı değeri (S_OK) 0'a eşit.Ancak, 0 Boolean türü için başarısız olduğunu gösterir.HRESULT 'ı bir Boolean türüne dönüştürmek ve sonra o sonucu bir test ifadesinde kullanmak hatalı bir sonuç verir.Eğer HRESULT bir Boolean değişkende saklanıyorsa bazen bu hata ortaya çıkar.Boolean değişlenini kullanan bir karşılaştırma HRESULT için başarılı veya başarısız olarak yanlış sonuçlara neden olabilir.

Örnek

Aşağıdaki kod bu uyarıyı oluşturur:

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  if ((BOOL)hr) // warning 6214
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

Bu uyarı düzeltmek için aşağıdaki kodu kullanın:

#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;
  }
}

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

Genellikle SUCCEEDED veya FAILED makroları HRESULT değerini test etmek için kullanılmalıdır.

Daha fazla bilgi için aşağıdaki konulardan birine bakın:

BAŞARILI

BAŞARISIZ