我有一个可变长度参数调试日志打印功能的问题。我将在这里模拟代码。我可以使用两级可变长度参数函数吗?
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通过...接收剩余的参数,但它调用带有级别和格式参数的SecondPrint。
我无法直接使用来自main的SecondPrint。 我必须使用FirstPrint并且FirstPrint必须调用SecondPrint才能打印日志。所以我怎样才能做到这一点..我想使用VA_ARGS但它只是宏定义不在函数定义。
还有一件事我做不到像* 的#define FirstPrint(A,B,...)SecondPrint(A,B,...) *
任何帮助是高度感谢提前感谢。