网上搜到的都是简单的宏定义,使用的时候难免有些问题,这是我在实际编写中使用的情况,只是截取了代码可变参函数调用可变参函数一部分,所以不能运行出来,只是便于理解,在另一篇里会发详细可运行代码
char* MyLogInfo(char* lpszFormat, va_list args)
{
//va_list args;
//va_start(args, lpszFormat);//初始化指针 第一个可选参数 args lpszFormat最后一个固定的可选参数 用于确定可变参数的个数
char szBuffer[BUFFSIZE] = { 0 };
char *p = __FILE__;
char *ptr = __FUNCTION__;
strcpy(szBuffer, p);
strcat(szBuffer, "-");
strcat(szBuffer, ptr);
strcat(szBuffer, "-");
vsprintf(szBuffer + strlen(szBuffer), lpszFormat, args);
cout << szBuffer << endl;
va_end(args);//清空可变参数列表
return szBuffer;
}
void MyLog::Write_DebugLog(char* Character, ...)//写debug日志
{
va_list args;
va_start(args, Character);
Debuglogger->debug(MyLogInfo(Character, args));//调用可变参函数并获取返回值
}
```int main()
{
int arr[10] = { 1,2,3,4 };
int i = 0;
int j = 1;
char *str = "吃吃吃";
log_debug("%d 11111",__LINE__);
system("pause");
return EXIT_SUCCESS;
}