Aracılığıyla paylaş


C6217

C6217 Uyarı: anlam farklı tamsayı türleri arasındaki örtülü dönüþtürme: hresult 'değil' ile sınama.Kullanmayı başarılı veya başarısız makro yerine.

Bu uyarıyı belirten bir HRESULT ile değil test (!) işleci.Başarı (S_OK), HRESULT 0 değeri ile belirtilir.Ancak, 0 Boolean türü için başarısız olduğunu gösterir.Sınama HRESULT ile not işleci (!) hangi kodu belirlemek için bloğu çalıştırmak için yanlış kod yolu neden olabilir.Bu, istenmeyen sonuçlara neden.

Örnek

Bu uyarı için aşağıdaki kod üretir değil işleci başarısını veya başarısızlığını belirlemek için kullanılan bir HRESULT değeri.Bu durumda, yanlış kod yolu nedeniyle yürütülür ( !hr ) hata kodu çalıştırır:

#include <windows.h>
#include <objbase.h>

void f( )
{
  HRESULT hr = CoInitialize(NULL); 
  if (!hr)
  {
    // failure code ...
  }
  else
  {
    // success code ...
  }
}

Aşağıdaki kod bu uyarıyı düzeltirken kullandığı FAILED makro hatası için aramak için:

#include <windows.h>
#include <objbase.h>

void f( )
{
  HRESULT hr = CoInitialize(NULL);  
  if (FAILED(hr))
  {
    // failure code ...
  }
  else
  {
    // success code ...
  }
}

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

hresult tipik başarı değeri (S_OK) ise false ne zaman sınama bir Boole değeri.

Doğrulamak için mi HRESULT bir başarı kullanımı olan SUCCEEDED makro yerine.