嵌入式設備中字符串輸出

在PC上編程一般適用printf來輸出調試信息到控制檯,在嵌入式設備中,一般適用串口或者IO設備來輸出字符串,有一下幾種方法:

第一種,重定向printf,需要重寫fputc()函數來覆蓋庫裏面提供的默認版本,只需要在fputc()裏面把字符輸出操作替換爲串口輸出或其它IO設備即可

第二種,自己定義一個類似printf的函數,用來替代他,裏面需要處理的是變參的問題

void dbg(char *fmt,...)    //fmt是一個變參數

比如自定義了一個dbg函數,內部如何處理fmt呢,這需要用到C標準庫中的stdarg.h文件,對於這個變參數,需要從裏面提取出va_list以方便帶入下面這個函數來將要打印的內容轉換爲字符串

va_list ap;
va_start(ap,fmt);
length = vsnprintf(buf, size, fmt, ap);    //這是sprintf的安全版本,提供了緩存溢出保護

獲取buf和length後,就可以調用設備的IO口來輸出字符串了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章