C6306

تحذير C6306: غير صحيح يتصل إلى <دالة>: يمكنك استخدام <دالة> التي تقبل va_list كـ وسيطة

يشير هذا التحذير استدعاء دالة غير صحيح. printfتتضمن عائلة العديد دالات التي تأخذ قائمة وسائط متغيرات؛ ومع ذلك، هذه دالات لا يمكن استدعاء مع va_listوسيطة. هناك المقابلة vprintfمجموعة من الوظائف التي يمكن استخدامها لهذه المكالمات. سيؤدي استدعاء دالة طباعة غير صحيحة الإخراج غير صحيحة.

مثال

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

#include <stdio.h>
#include <stdarg.h>


void f(int i, ...)
{
   va_list v;
   
   va_start(v, i);
   //code...
   printf("%s", v); // warning 6306 
   va_end(v);
}

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

#include <stdio.h>
#include <stdarg.h>

void f(int i, ...)
{
   va_list v;
  
   va_start(v, i);
   //code...
   vprintf_s("%d",v);
   va_end(v);
}

راجع أيضًا:

المرجع

C6273