第一次来CSDN玩blog,随便写点东西,呵呵
很多初学MFC的兄弟们在MFC下用惯了TRACE,在console下偶尔也想用用TRACE函数,但是很可惜,在console下用不了了,不过你可以用printf函数来代替,但是心中免不了多少有点遗憾,呵呵,心想为什么MFC下有TRACE函数console下就没有呢?其实不是这样的,在console下可以用相关函数来模拟一个TRACE函数,如下:
#include <stdio.h>
#include <assert.h>
#include <tchar.h>
#include <windows.h>
void MyTrace(LPCTSTR lpszFormat, ...)
{
va_list args;
va_start(args, lpszFormat);
TCHAR szBuffer[512];
int nBuf = _vsntprintf(szBuffer, sizeof(szBuffer)/sizeof(szBuffer[0]), lpszFormat, args);
va_end(args);
assert(nBuf >= 0);
OutputDebugString(szBuffer);
}
建立一个win32 console application,写一段测试代码。
void main()
{
int i = 20;
char* p = "hello world";
MyTrace("i = %d, p = /"%s./"/n", i, p);
}
如果你愿意,你还可以添加一段宏#define TRACE MyTrace,F5,在Debug Window里面将会出现如下内容:
i = 20, p = "hello world".
代码其实很简单,主要是使用了函数OutputDebugString(...),它是windows debug技术里面的一个函数,在MSDN的Platform: Debugging and Error Handling里面你可以看到它。还有一些其它函数可以用在我们的Application中,比如IsDebuggerPresent(),在Encrypt中,该函数可以在一定程度上防止别人跟踪我们的程序,有兴趣的哥们儿可以深入MSDN研究研究,呵呵。
第一次发帖,欢迎大家拍砖。