我有一個可變長度參數調試日誌打印功能的問題。我將在這裏模擬代碼。我可以使用兩級可變長度參數函數嗎?
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,...) *
任何幫助是高度感謝提前感謝。