C6284
تحذير C6284: الكائن الذي تم تمريره كمعلمة '% d' عندما سلسلة هو المطلوبة في استدعاء <دالة>.
هذا التحذير يشير إلى أن تحدد سلسلة التنسيق سلسلة، ل مثال، على %sمواصفات printfأو scanf، ولكن تم تمرير كائن C + + بدلاً من ذلك.
قد تعطي عيب هذا الإخراج غير صحيحة أو الأعطال.
غالباً ما يتم الإعلام عن هذه الرسالة نظراً لتمرير كائن C + + تنفيذ بعض نوع السلسلة، على سبيل المثال، std::string، CComBSTRأو bstr_t، في C printf-النمط المكالمة. استناداً إلى تطبيق فئة C + +، التي هو، إذا كان تحويل المناسبة يتم تعريف عوامل تشغيل، C + + سلسلة الالكائنات يمكنك غالباً استخدام شفافية كلما السلاسل C مطلوبة؛ تشغيل الرغم من ذلك، لأن المعلمات إلى printf-النمط الدالات مصنف بشكل أساسي، يحدث لا تحويل إلى سلسلة.
Depending on the object, it might be appropriate to insert a static_cast operator to the appropriate string type, for example, char * or TCHAR *, or to call a member function which returns a string, for example, c_str(), on instances of std::string.
مثال
تنشئ التعليمة البرمجية التالية th هو تحذير لأن CComBSTRهو التي تم تمريرها إلى sprintfدالة:
#include <atlbase.h>
#include <stdlib.h>
void f()
{
char buff[50];
CComBSTR bstrValue("Bye");
sprintf(buff,"%ws",bstrValue);
}
يلي تعليمات برمجية يستخدم فريق العمل الثابتة لتصحيح هذا التحذير:
#include <atlbase.h>
#include <stdlib.h>
void f()
{
char buff[50];
CComBSTR bstrValue("Bye");
sprintf_s(buff,50,"%ws",static_cast<wchar_t *>(bstrValue));
}