wince编程中用的最多的输出log的函数是DebugMessage和RetailMessage,将log信息通过串口输出到终端上。但在实际使用过程中我们有时会遇到设备接口被占用的情况,或者上种方式输出的log与其他程序输出的log混杂在一起,不便查看和保存。那么可以使用下面这种方式,将log信息输出到一个文本文件中。
在源文件中添加如下代码: #if defined(DEBUG) || defined(_DEBUG) #define ENTERTRACE() TRACE(L"----->>> %S", __FUNCTION__) #define EXITTRACE(hr) TRACE(L"<<<----- %S (0x%x)\r\n", __FUNCTION__, hr) void TRACE(LPWSTR format, ...) { FILE *fOutput = NULL; WCHAR buffer[1024] = { 0 }; if ((fOutput = fopen("\\temp\\Log.txt", "a")) != NULL) { va_list va; va_start(va, format); wvsprintf(buffer, format, va); va_end(va); fwprintf(fOutput, buffer); fwprintf(fOutput, L"\r\n"); fclose(fOutput); } } #else #define TRACE(printf_exp) ((void)0) #define ENTERTRACE() ((void)0) #define EXITTRACE(hr) ((void)0) #endif 使用: int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, LPTSTR szCmdLine, int nCmdShow) { ENTERTRACE();//一般放在函数起始处,输出信息包含函数的名称。 HRESULT hr = S_OK; int i =1; TRACE(L“Trace test %d”,i);//跟C语言的printf使用方法一样。 EXITTRACE(hr); //一般放在退出函数点处,hr为返回的结果值。 return hr; } |
|