C6215

تحذير C6215: تحويل بين أنواع صحيحاً دلالياً مختلفة: اكتب قيمة منطقية HRESULT إلى

هذا التحذير يشير إلى أن منطقي هو الذي يتم تحويل إلى HRESULT. أنواع منطقية إلى نجاح بقيمة غير صفرية، بينما نجاح ( S_OK) في HRESULTهو المشار إليها بواسطة قيمة 0. بث نوع Boolean إلى HRESULTوسوف العائد ثم استخدامه في تعبير اختبار على نتيجة غير صحيحة.

هذا التحذير بشكل متكرر يحدث عند استخدام قيمة منطقية كوسيطة إلى SUCCEEDEDأو FAILEDالماكرو casts الوسيطات الخاصة بها بشكل واضح HRESULT.

مثال

يلي تعليمات برمجية ينشئ هذا التحذير:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
  {
    // success code ...
  }
  else
  {
    // failure code ...
  }
}

بشكل عام، SUCCEEDEDأو FAILEDيجب تطبيق وحدات الماكرو فقط إلى HRESULT.

إلى تصحيح هذا التحذير، استخدم تعليمات برمجية التالية:

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

void f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual( riid1, riid2 ) == TRUE) 
  {
    // code for riid1 == riid2
  }
  else
  {
    // code for riid1 != riid2
  }
}

للحصول على مزيد من المعلومات، راجع نجح ماكرو MacroFAILED و فشل الماكرو