C語(yǔ)言 OutputDebugString與格式化輸出函數(shù)OutputDebugPrintf案例詳解
OutputDebugString屬于windows API的,所以只要是包含了window.h這個(gè)頭文件后就可以使用了??梢园颜{(diào)試信息輸出到編譯器的輸出窗口,還可以用DbgView(本機(jī)或TCP遠(yuǎn)程)這樣的工具查看,這樣就可以脫離編譯器了。
OutputDebugString 默認(rèn)只能輸入一個(gè)參數(shù),不能像printf那樣格式化輸出,下面改造成類似printf函數(shù)的輸出方式。
#include <windows.h> #include <stdio.h> //#include <stdlib.h> #include <stdarg.h> #define IS_USE_OUTPUT_DEBUG_PRINT 1 #if IS_USE_OUTPUT_DEBUG_PRINT #define OUTPUT_DEBUG_PRINTF(str) OutputDebugPrintf(str) void OutputDebugPrintf(const char * strOutputString, ...) { #define PUT_PUT_DEBUG_BUF_LEN 1024 char strBuffer[PUT_PUT_DEBUG_BUF_LEN] = { 0 }; va_list vlArgs; va_start(vlArgs, strOutputString); _vsnprintf_s (strBuffer, sizeof(strBuffer) - 1, strOutputString, vlArgs); //_vsnprintf_s _vsnprintf //vsprintf(strBuffer,strOutputString,vlArgs); va_end(vlArgs); OutputDebugStringA(strBuffer); //OutputDebugString // OutputDebugStringW } #else #define OUTPUT_DEBUG_PRINTF(str) #endif
使用實(shí)例:
OutputDebugPrintf("DEBUG_INFO | %d %s",600019,"hello");
然后在 DbgView 設(shè)置一個(gè)過(guò)濾:DEBUG_INFO,抓取固定的輸出。
Unicode模式下,OutputDebugString要求一個(gè) wchar_t 而不是char,而sprintf則需要char參數(shù),那我們是不是一定要通過(guò)字符轉(zhuǎn)換解決問(wèn)題呢?
答案就是 OutputDebugStringA()
原因:Unicode模式,OutputDebugString會(huì)變成OutputDebugStringW。如果想用ANSI版本的,直接寫OutputDebugStringA,或者設(shè)置工程屬性,使用MBCS的編碼集。
處理“error C2220: warning treated as error - no object file generated”錯(cuò)誤"
產(chǎn)生原因?yàn)椋河行㏄roject編譯選項(xiàng)中,Treat Warnings As Errors(把警告看作錯(cuò)誤來(lái)處理)選項(xiàng)開(kāi)啟了。
只要把此選項(xiàng)關(guān)閉,就可以正常編譯了。
在Solution中,選擇工程,右鍵菜單中選擇“Properties”。彈出的屬性框中,將Configuration選擇“All Configurations”,選擇“C/C++/General/”,右側(cè)Treat Warnings As Errors值從原來(lái)的“Yes(/WX)”改為“No(/WX-)”。
點(diǎn)擊確定,再重新編譯,即可。
到此這篇關(guān)于C語(yǔ)言 OutputDebugString與格式化輸出函數(shù)OutputDebugPrintf案例詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言 OutputDebugString與格式化輸出函數(shù)OutputDebugPrintf內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言開(kāi)發(fā)簡(jiǎn)易版掃雷小游戲
本文給大家分享的是一個(gè)使用C語(yǔ)言開(kāi)發(fā)的命令行下的簡(jiǎn)易版掃雷小游戲,本身沒(méi)有什么太多的技術(shù)含量,只不過(guò)是筆者的處女作,所以還是推薦給大家,希望對(duì)大家學(xué)習(xí)C能夠有所幫助。2015-12-12解決codeblocks斷點(diǎn)不停無(wú)效的問(wèn)題
今天小編就為大家分享一篇解決codeblocks斷點(diǎn)不停無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12C語(yǔ)言編寫簡(jiǎn)單的定時(shí)關(guān)機(jī)程序
本文給大家分享的是一則C語(yǔ)言編寫的簡(jiǎn)單的定時(shí)關(guān)機(jī)程序,可以設(shè)置0-600秒倒計(jì)時(shí),有需要的小伙伴可以參考下。2016-02-02