C6220
تحذير C6220-فريق العمل الضمني بين مختلف دلالياً عدد صحيح أنواع: مقارنة HRESULT إلى-1. يمكنك استخدام نجحت أو فشل الماكرو بدلاً من ذلك
Th هو التحذير يشير إلى أن HRESULTهو يتم مقارنتها مع واضحة، غير- HRESULTالقيمة-1، الذي هو ليس جيد HRESULT. فشل في HRESULT(E_FAIL) هو لا تكون ممثلة-1. ولذلك، تحويل ضمني من HRESULTإلى عدد صحيح توليد القيمة غير صحيحة و هو المحتمل أن يؤدي إلى نتائج غير صحيحة.
مثال
في معظم الحالات، th هو التحذير هو بسبب mهوtakenly رمز توقع التي إحدى الوظائف التي يجب أن تعود HRESULTبدلاً من ذلك بإرجاع عدد صحيح، باستخدام – 1 كقيمة الفشل. نموذج تعليمات برمجية التالي بإنشاء هذا تحذير:
#include <windows.h>
HRESULT f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (hr == -1)
{
// failure code ...
return E_FAIL;
}
else
{
// success code ...
return S_OK;
}
}
هو المثالي باستخدام SUCCEEDEDأو FAILEDالماكرو لاختبار القيمة HRESULT. إلى تصحيح هذا التحذير، استخدم تعليمات برمجية التالية:
#include <windows.h>
HRESULT f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (FAILED(hr))
{
// failure code ...
return E_FAIL;
}
else
{
// success code ...
return S_OK;
}
}
لهذا التحذير، SCODEنوع هو المكافئ إلى HRESULT.
comparهوon واضح هو المناسبة للتحقق من HRESULTقيم، مثل محدد E_FAIL. وإلا، استخدم SUCCEEDED أو FAILEDوحدات الماكرو.
ل المزيد من المعلومات، انظر نجاح الماكرو و فشل الماكرو .