我对可变长度参数调试日志打印功能有一个问题。我将在这里模拟代码。
void SecondPrint(int level, const char* format,...)
{
//Printing the log here
va_list arg;
va_start(arg, format);
vprintf(format, arg);
va_end(arg);
}
void FirstPrint(int level, const char* format,...)
{
SecondPrint(level,format);
}
void main()
{
int level = 100;
FirstPrintf("Log level = %d message = %s \n",level,"Error message");
}
“SecondPrint”应该按预期打印“100错误消息”,但它不像打印“错误消息”那样打印。
我不明白这个有什么问题。我怀疑从“FirstPrint”函数调用“SecondPrint”的方式。FirstPrint 通过 ... 接收剩余的参数,但它使用 level 和 format 参数调用 SecondPrint。
我不能直接从 main 使用 SecondPrint。我必须使用 FirstPrint 并且 FirstPrint 必须调用 SecondPrint 来打印日志。那么我怎样才能实现这一目标.. 我想使用VA_ARGS但它仅用于宏定义而不是函数定义。
还有一件事我不能做 * #define FirstPrint(a,b,...) SecondPrint(a,b,...) *
任何帮助都非常感谢提前感谢。