最近在编写日志模块时,用到va_list,因为输出会包含不定数目的参数。
要求是在函数参数列表里,用...表明多个参数,但...之前必须得有一个参数。
声明va_list args,
void logDebug(char *p, ...) { va_list args; /* 之所以...前要有一个参数,是用于初始化args时,指定第一个参数 */ /* 此时,我用p作为format */ va_start(args, p); /* 而args里,没有p,是...部分 */ vfprintf(fp, p, args); /* 如此,把args以p的格式,写入到fp */ va_end(args); /* 释放args */ }