|
printf函數(shù)是一個功能非常強大的函數(shù),在單片機的調(diào)試過程中經(jīng)常會要適時地輸出變量的值,這時printf函數(shù)是一個非常好的選擇;對于一般的單片機只有串口可以與外界進行通信,所以我們需要將printf函數(shù)重定向到串口;在這里會涉及到兩個關(guān)鍵問題:函數(shù)的重載和函數(shù)的重定向問題;
首先是函數(shù)重載的問題;函數(shù)重載的主要用途之一是利用函數(shù)的多態(tài)性來實現(xiàn)用多種方法去實現(xiàn)同一接口功能;總而言之不管printf函數(shù)是多么的復(fù)雜,但是歸根結(jié)底使用的最低層的函數(shù)是putchar函數(shù);purchar函數(shù)與具體的硬件結(jié)構(gòu)打交道;所以實現(xiàn)重載就是根據(jù)具體不同的硬件結(jié)構(gòu)去實現(xiàn)不同的putchar實體功能;所以在這里我們只需要修改putchar的實體,要注意函數(shù)重載的要求,函數(shù)名相同,但是形參不能完全相同;但是在STM8S中按照函數(shù)重載的要求定義了兩個putchar函數(shù),庫自帶的putchar原型為:int putchar(char);我在文件中自定義文件為int putchar (unsigned char);編譯會出錯:redeclared external putchar;將函數(shù)原型改為
char putchar (char);編譯則能通過;那我只能使用的編譯器COMSIC不支持函數(shù)重載功能;
暫時先說到這里了。。。。
|
|