MENU

C++ 实现自定义调试输出函数

February 9, 2022 • Read: 578 • C/C++

ANSI版本

void trace(const char *format, ...)
{
    std::string szTemp("t:");
    va_list marker = NULL;
    va_start(marker, format);
    size_t nLength = _vscprintf(format, marker) + 1;
    std::vector<char> vBuffer(nLength, '\0');
    int nWritten = _vsnprintf_s(&vBuffer[0], vBuffer.size(), nLength, format, marker);
    if (nWritten > 0)
    {
        szTemp += &vBuffer[0];
        OutputDebugStringA(szTemp.c_str());
    }
    va_end(marker);
}

UNICODE版本

void wtrace(const wchar_t *format, ...)
{
    std::wstring szTemp(L"t:");
    va_list marker = NULL;
    va_start(marker, format);
    size_t nLength = _vscwprintf(format, marker) + 1;
    std::vector<wchar_t> vBuffer(nLength, '\0');
    int nWritten = _vsnwprintf_s(&vBuffer[0], vBuffer.size(), nLength, format, marker);
    if (nWritten > 0)
    {
        szTemp += &vBuffer[0];
        OutputDebugStringW(szTemp.c_str());
    }
    va_end(marker);
}
回到上个页面 QR Code
QR Code for this page
Tipping QR Code