小编Kev*_*vin的帖子

有没有更好的方法将格式化输出传递给OutputDebugString?

通常,当我需要在Windows中进行调试输出时,我使用以下C代码段:

#ifdef _DEBUG
#define DBGPRINT( kwszDebugFormatString, ... ) \
{ \
    wprintf_s( L"[%s:%d] ", __FUNCTIONW__, __LINE__ ); \
    wprintf_s( kwszDebugFormatString, __VA_ARGS__ ); \
}
#else
#define DBGPRINT( kwszDebugFormatString, ...) ;;
#endif
Run Code Online (Sandbox Code Playgroud)

我想重新编码使用OutputDebugString不接受格式字符串.我认为静态地在堆栈上分配一个小数组(例如WCHAR wszBuf[100] = {0};)有些粗糙,因为它可能消耗比分配的内存更多或更少的内存,并截断输出或浪费内存.我编写了以下代码来解决所有这些问题,但我担心因为宏有点大.

#ifdef _DEBUG
#define DBGPRINT( kwszDebugFormatString, ... ) \
{ \
    INT iLineNumber = __LINE__; \
    FILE *fileNul = NULL; \
    INT cbFormatString = 0; \
    PWCHAR wszDebugString = NULL; \
    size_t st_Offset = 0; \
    \
    /* Determine the number of …
Run Code Online (Sandbox Code Playgroud)

c debugging winapi visual-studio-debugging visual-studio-macros

3
推荐指数
2
解决办法
3717
查看次数