C++中实现MFC风格的TRACE

#include <Windows.h>

#ifdef _DEBUG
void myTrace(const char *format, ...)
{
 char msg[1024] = { 0 };
 va_list pArgList;
 va_start(pArgList, format);
 vsprintf_s(msg, format, pArgList);
 va_end(pArgList);
 OutputDebugStringA(msg);
}
#define TRACE myTrace
#else
#define TRACE
#endif

关键点:字符串格式化必须使用“vsprintf_s”,而不能使用“sprintf_s",“sprintf_s"的第三个参数是”...“,而不是va_list,编译不错错,但是会导致无法正确格式化数据,堆栈的地址也不对,可能导致崩溃。

posted @ 2016-09-20 17:15  邵学军  阅读(1514)  评论(0编辑  收藏  举报