尝试将两个类似的printf样式调试消息组合到一个函数中

Ste*_*rst 5 c c++

我有两个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?

MRA*_*RAB 6

你可以创建一个新的功能,DebuglogfV它具有const char *lpszTextva_list argList作为参数,然后让DebuglogfA,并DebuglogfB调用它来执行实际的记录.