如@psxf91所答,應使用v*系列的函數來實現。對比下printf與vprintf函數原型:
void?printf(const?char?*format,?...);void?vprintf(const?char?*format,?va_list?ap);
可以看出二者的差別。vprintf才接收va_list類型,printf接收的是不定參數。
因此,要實現妳的要求代碼如下:
#include?"stdarg.h"void?fun(const?char?*fmt,?...){
va_list?ap;
va_start(ap,?fmt);
//?...
vprintf(fmt,?ap);
//?...
va_end(ap);
}