VC++非MFC項目中如何使用TRACE宏
記得原來嘗試學MFC的時候覺得有一個TRACE可以在Debug時向VS的調試輸出窗口輸出字串符,用來調試時跟蹤變量很方便。
然則如果不是MFC項目或者ATL的項目的話是不能使用這個宏的。這時有一個沒有什么額外消耗的辦法能夠做到向調試輸出窗口輸出。
在項目中額外包含windows.h這個頭文件,再使用OutputDebugString()這個函數就能夠起到與TRACE()宏相同的效果。在進行一點包裝就能和c中的printf一樣接受不定項參數。
下面程序做為范例。
#include <iostream>
#include <windows.h>
using namespace std;
bool _trace(TCHAR *format, ...)
{
TCHAR buffer[1000];
va_list argptr;
va_start(argptr, format);
wvsprintf(buffer, format, argptr);
va_end(argptr);
OutputDebugString(buffer);
return true;
}
int main() {
int test = 5;
_trace("hi output:%d", test);
int a;
cin >> a;
}
在vs2005中編譯運行后在Output窗口輸出"hi output : 5"
這么nb的做法當然不是我自己發現的...在StackOverflow這里發帖問到的,那邊還有一個方便使用的將trace包裝的頭文件和cpp文件。
話說這個StackOverflow是個蠻新穎的程序員社區,這邊提問被解答的效率和質量都相當高
站點也做的很不錯,web2.0風味十足,還有badges這種先進的要素
-------------------------------------
另外記得要將項目屬性中General->Character Set設置為Not Set 或者Multi Byte才行,用Unicode的話無法通過編譯。
再附個包trace.rar有相應cpp/h
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成