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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM