C6306
更新:2007 年 11 月
警告 C6306:不正确的 <function> 调用: 应考虑使用接受 va_list 作为参数的 <function>
此警告意味着函数调用有误。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);
}