DEBUGMSG
該宏用於有條件地輸出調試資訊
原型:
DEBUGMSG (Condition, Printf_expr)
說明:
第一個參數為布爾值,決定訊息是否被輸出。TRUE:輸出,FALSE:不輸出。
第二個參數類似於printf函數。注意:該參數必須括在括弧中 。參數將被傳遞到 NKDbgPrintf 函數中。
在Wince或WM開發中要記住,DEBUGMSG的第二個參數的格式控制(Format control)為UNICODE字元,也就是下面例子中被TEXT包含的部分,它的形式類似於printf傳參的形式。
下面是MSDN上的例子:
- DEBUGMSG(TRUE, (TEXT("Testing item count against maximum %u\r\n"),
- dwMaxNumberOfItems));
- DEBUGMSG(dwCurrentNumberOfItems >= dwMaxNumberOfItems,
- (TEXT("Invalid item count! Found %u, expected less than %u\r\n"),
- dwCurrentNumberOfItems, dwMaxNumberOfItems));
輸出為:
Testing item count against maximum 68
Invalid item count! Found 343, expected less than 68
再看看下面這個例子:
- char szOut[] = "Hello, DEBUGMSG";
- DEBUGMSG(TRUE, (TEXT("%s\n"), szOut));
輸出為:
ЧHⱯ䐠䉅䝕d\uc1G
發現輸出的為亂碼,這是為什麼呢? 因為格式控製為UNICODE字元,所以傳入的字元或字串型條件參數也要為UNICODE字元,如下:
- TCHAR szWOut[20] = {0};
- MultiByteToWideChar(CP_ACP, 0, szOut, -1, szWOut, 20);
- DEBUGMSG(TRUE, (TEXT("%s\n"), szWOut));
輸出為:
Hello, DEBUGMSG
一切都正確了。
Good Luck!