我有两个printf样式的调试日志记录功能(DebuglogfA
,DebuglogfB
)。两种操作方式相同,但是其中一个日志记录功能将日志记录级别作为参数,并忽略低级调试消息。
当前,我为每个函数都复制了代码,但是我希望DebuglogfB能够在调试级别足够高的情况下调用DebuglogfA,而不必在DebuglogfB中创建临时缓冲区。
void DebuglogfA( const char *lpszText, ...)
{
//Initialize variable argument list
va_list argList;
va_start(argList, lpszText);
char buffer[1024];
unsigned short length = snprintf_s(buffer, 1024, "[%d] ", CTime::GetCurrentTimeInSec() );
length += vsnprintf (buffer+length, 1024 - length, lpszText, argList );
LogSend( buffer, length );
}
void DebuglogfB ( const unsigned int level, const char *lpszText, ... )
{
if( level < 50 ) {
return; // To low to report.
}
//Initialize variable argument list
va_list argList;
va_start(argList, lpszText);
char buffer[1024];
unsigned short length = snprintf_s(buffer, 1024, "[%d] ", CTime::GetCurrentTimeInSec() );
length += vsnprintf (buffer+length, 1024 - length, lpszText, argList );
LogSend( buffer, length );
}
我的问题是:
如何在不为DebuglogfB中的消息创建缓冲区的情况下获取函数DebuglogfB来调用DebuglogfA?
最佳答案
您可以创建一个具有DebuglogfV
和const char *lpszText
作为参数的新函数va_list argList
,然后让DebuglogfA
和DebuglogfB
调用它来执行实际的日志记录。
关于c++ - 试图将两个类似的printf样式调试消息合并到一个函数中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6769875/