C6306
警告 C6306: <関数> への不適切な呼び出しです: va_list を引数として受け入れる <関数> を使用してください
この警告は、誤った関数呼び出しが行われたことを示します。 printf ファミリには、引数の変数一覧を受け取る関数がいくつか含まれています。しかし、va_list 引数を使用してこれらの関数を呼び出すことはできません。 対応する vprintf 関数ファミリは、そのような呼び出しに使用できます。 誤った print 関数を呼び出すと、誤った出力が発生します。
使用例
この警告が発生するコード例を次に示します。
#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);
}