printf函数是一个功能非常强大的函数,在单片机的调试过程中经常会要适时地输出变量的值,这时printf函数是一个非常好的选择;对于一般的单片机只有串口可以与外界进行通信,所以我们需要将printf函数重定向到串口;在这里会涉及到两个关键问题:函数的重载和函数的重定向问题;
首先是函数重载的问题;函数重载的主要用途之一是利用函数的多态性来实现用多种方法去实现同一接口功能;总而言之不管printf函数是多么的复杂,但是归根结底使用的最低层的函数是putchar函数;purchar函数与具体的硬件结构打交道;所以实现重载就是根据具体不同的硬件结构去实现不同的putchar实体功能;所以在这里我们只需要修改putchar的实体,要注意函数重载的要求,函数名相同,但是形参不能完全相同;但是在STM8S中按照函数重载的要求定义了两个putchar函数,库自带的putchar原型为:int putchar(char);我在文件中自定义文件为int putchar (unsigned char);编译会出错:redeclared external putchar;将函数原型改为
char putchar (char);编译则能通过;那我只能使用的编译器COMSIC不支持函数重载功能;
|