我有两个printf样式的调试日志功能(DebuglogfA,DebuglogfB).两者都以相同的方式运行,但其中一个日志记录功能将日志记录级别作为参数,并忽略低级调试消息.
目前我复制了每个函数的代码,但是如果调试级别足够高而不必在DebuglogfB中创建临时缓冲区,我希望DebuglogfB能够调用DebuglogfA.
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 );
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如何在不为DebuglogfB中的消息创建缓冲区的情况下调用DebuglogfB函数来调用DebuglogfA?
你可以创建一个新的功能,DebuglogfV它具有const char *lpszText与va_list argList作为参数,然后让DebuglogfA,并DebuglogfB调用它来执行实际的记录.
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |