C6214
تحذير C6214: تحويل بين أنواع صحيحاً دلالياً مختلفة: HRESULT إلى نوع قيمة منطقية
Th هو التحذير يشير إلى أن HRESULTهو يتم تحويل إلى نوع منطقي. القيمة نجاح ( S_OK) من HRESULTتساوي 0. ومع ذلك، يشير 0 إلى فشل منطقي النوع. بث HRESULTإلى نوع Boolean و ثم سيتم استخدامه في تعبير اختبار العائد على نتيجة غير صحيحة. في بعض الأحيان، th هو يحدث التحذير إذا كان HRESULTهو يتم تخزينه في المتغير Boolean. أي المقارنة التي تستخدم متغير منطقية ل اختبار HRESULTنجاح أو فشل قد يؤدي إلى نتائج غير صحيحة.
مثال
يلي تعليمات برمجية ينشئ هذا التحذير:
#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;
}
}
إلى تصحيح هذا التحذير، استخدم تعليمات برمجية التالية:
#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;
}
}
لهذا التحذير، SCODEنوع هو المكافئ إلى HRESULT.
عادة، SUCCEEDEDأو FAILEDيجب استخدام الماكرو إلى اختبار القيمة HRESULT.
لمزيد من المعلومات، راجع أحد المواضيع التالية: