导航

valist

最近在编写日志模块时,用到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 */
}

  

posted on 2021-04-03 20:04  toughcactus  阅读(218)  评论(0编辑  收藏  举报