va_list valist 定义了指向参数列表的指针

va_start(ap, FileLine) 将指针放至参数FileLine后一字节

va_arg(ap, char*) 以char 的类型返回第一个参数,并将指针指向第二参数开头

 

va_list valist 可作为函数声明中的可变参数部分

int   Log_fatal(char *c_filename, long c_fileline, char *format, va_list valist)

__VA_ARGS__ 标识符只能出现在可变参数宏中的替换列表中

#define htLogDebugC(...)     htLog(HTLOG_LEVEL_DEBUG,__FILE__,__LINE__,__VA_ARGS__)

将可变参数从宏--->函数--->函数

#define htLogDebug(pLog,...)     (pLog)->LogOut(HTLOG_LEVEL_DEBUG,__FILE__,__LINE__,__VA_ARGS__)

int32_t LogOut(uint32_t Level, const char *FileName, long FileLine, char *Format, ...) ;

LogOut函数中将...可变参数列表处理:

va_list ap;
va_start(ap, FileLine);

Log_debug((char*)FileName, FileLine, va_arg(ap, char*),ap); //调用另一个函数

va_end(ap);

//Log_debug的声明

//int Log_debug(char* c_filename, long c_fileline, char *format, va_list valist)

其他函数 直接使用valist即可

 WriteLogBase( (_g_) , c_filename , c_fileline , _log_level_ , format , valist ) ;

 posted on 2017-10-19 13:36  妍血  阅读(838)  评论(0)    收藏  举报