警告 C6306

'function' の呼び出しが正しくない: 引数としてva_listを受け入れる 'function' の使用を検討してください

解説

この警告は、関数呼び出しが正しくないことを示します。 この printf ファミリには、引数の可変リストを受け取る複数の関数が含まれていますが、これらの関数を引数で va_list 呼び出すことはできません。 このような呼び出しに使用できる関数の対応する vprintf ファミリがあります。 間違った print 関数を呼び出すと、正しくない出力が発生します。

コード分析名: INCORRECT_VARARG_FUNCTIONCALL

この警告が発生するコード例を次に示します。

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

void f(int i, ...)
{
   va_list v;

   va_start(v, i);
   //code...
   printf("%s", v); // warning C6306
   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