为了账号安全,请及时绑定邮箱和手机立即绑定

为什么而且也没有指出f指针的指向程序中用printf输出的语句如下

为什么而且也没有指出f指针的指向程序中用printf输出的语句如下

泛舟湖上清波郎朗 2022-10-03 15:10:59
// Printf 调用函数int fputc(int ch, FILE *f){return(Usart1_Txd(ch)); // 发送并返回数据}程序中既没有声明,也没看出怎么调用的但去掉就不行printf("Period: %u ", TIM2->CCR2); // 输出周期,清除CC2IFif(TIM2->SR & 2) // CC1IF=1printf("Width: %u\r\n", TIM2->CCR1); // 输出宽度,清除CC1IF
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

这个fputc是你平台特定的实现,不是标准实现,参数f的存在只是为了兼容其他的实现而已。
你这个平台实现是调用一个串口输出函数(Usart1_Txd)直接输出字符到硬件。
有的平台是经过文件系统的,FILE* f就要发挥作用了。

查看完整回答
反对 回复 2022-10-06
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

1 平台a实现可能是这样的 int fputc(int ch, FILE *f) {     fprintf(f, "%c", ch); } 2 平台b实现可能是这样的 int fputc(int ch, FILE *f) {     write(stdout,  &ch, 1);  }  3 还有些平台可能就是像你这样的  所以,为了兼容所有实现,参数肯定得保留,你最多不用。

查看完整回答
反对 回复 2022-10-06
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信