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
浙公网安备 33010602011771号