日志打印接口 编译时出现:error: ‘va_start’ used in function with fixed args
现在 在写一个日志接口:
主要想采用vsnprintf 和va_start() 系统调用, 基本要实现类似下面的功能;但是每次日志打印testlog.c和TLOGDEBUG(),这些是日志接口的信息,而非调用接口处的文件和函数。
[debug][2013-04-09 14:18:20] [testlog.c:TLOGDEBUG():189]
出现上面情况主要是把__FILE__,__FUNCTION__,__LINE__封装到日志接口函数内部实现中,未了避免是上面情况,把__FILE__等信息作为入参传入日志接口中。先定义两个宏,但是编译时出现error: ‘va_start’ used in function with fixed args。不知道什么原因?大家请帮忙看下,对下面的定义,大家有什么好的想法可以绕过这个坑。
83 #define LOGDEBUG(File,Func,Line,fmt, ...) do { \
84 va_list ap; \
85 va_start(ap, fmt); \
86 LOGFUNC(File, Func, Line,fmt,ap,Debug );\
87 va_end(ap); \
88 } \
89 while(0)
90
91
92 #define TLOGDEBUG(fmt, ... )do { \
93 LOGDEBUG(__FILE__,__FUNCTION__,__LINE__,fmt, ...); \
94 } \ &nb