如何使用宏定义替代一个不定函数?
原始函数
void RecordLog(const char *func,const char *fmt, ...)
{
char buff[1024];
sprintf(buff,"func(%s) ",func);
va_list ap;
va_start ( ap, fmt);
vsnprintf(buff+strlen(buff),sizeof(buff),fmt,ap);
va_end(ap);
strcat(buff,"\n");
printf("%s",buff);
}
要如何写DEBUG这个宏,实现以下效果?
DEBUG("%s","test");
相当于
RecordLog(__FUNCTION__,"%s","test"); //__FUNCTION__表示当前语句所处函数
[解决办法]
GCC:
#define DEBUG(fmt, ...) RecordLog(__FUNCTION__, fmt, __VAR_ARGS__)
[解决办法]
__VAR_ARGS__是预编译处理的东西,没有头文件声明。