既然 printf 原型是:printf(const char * restrict format, ...);那为什么不能printf(format, va_ptr)这样用呢?
#include <stdio.h>
#include <stdarg.h>
void foo(const char* format, ...) {
va_list va_ptr;
va_start(va_ptr, format);
printf(format, va_ptr); // 为什么不能这样用呢?
va_end(va_ptr);
}
int main()
{
foo("%s, %d\n", "test", 100); //输出并不是:test 100
return 0;
}
接受
va_list
的是vprintf
: