C6217
تحذير C6217: فريق العمل الضمني بين مختلف دلالياً عدد صحيح أنواع: قم باختبار HRESULT مع 'عدم'. يمكنك استخدام نجحت أو فشل الماكرو بدلاً من ذلك
Th هو التحذير يشير إلى أن HRESULTهو يتم اختباره مع عدم ( !) عامل. نجاح ( S_OK) في HRESULTهو المشار إليها بواسطة قيمة 0. ومع ذلك، يشير 0 إلى فشل منطقي النوع. اختبار HRESULTمع عدم operaإلىr ( !) إلى تحديد كتلة تعليمات برمجية التي إلى يمكن أن يؤدي تشغيل بعد مسار. رمز الخطأ سوف يؤدي هذا إلى نتائج غير مرغوب فيها.
مثال
تنشئ التعليمة البرمجية التالية th هو تحذير لأن عدم عامل هو المستخدمة لتحديد نجاح أو فشل على HRESULTالقيمة. في ترتيب هو مسار رمز خطأ، حالة هو تنفيذها لأن ( !hr )يعمل رمز الفشل:
#include <windows.h>
#include <objbase.h>
void f( )
{
HRESULT hr = CoInitialize(NULL);
if (!hr)
{
// failure code ...
}
else
{
// success code ...
}
}
لتصحيح هذا التحذير، التالية تعليمات برمجية يستخدم FAILED ماكرو للبحث عن الفشل:
#include <windows.h>
#include <objbase.h>
void f( )
{
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
// failure code ...
}
else
{
// success code ...
}
}
لهذا التحذير، SCODEنوع هو المكافئ إلى HRESULT.
القيمة نجاح النموذجية HRESULT ( S_OK) هو falseعند اختبار كـ القيمة منطقية.
للتحقق من ما إذا كان HRESULTهو نجاح، واستخدام SUCCEEDEDالماكرو بدلاً من ذلك.