IAR或者Keil用到重定向printf函数出现的错误解决方案

我所使用的是STM32F407开发板,在IAR下写程序,Keil遇到这个问题也可以这么解决

1、我所使用的重定向printf函数如下

在uart.c里面添加一下程序

#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int _io_putchar(int ch)
#else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__*//*******************************************************************@brief  Retargets the C library printf  function to the USART.*@param  None *@retval None
******************************************************************/
PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);return ch;
}

然后编译

出现的警告及错误如下图所示

我google了一下 :
很多网友的提供的解决方案几乎一样, 即 在IAR中
Options -> General Options -> Library Configuration
在这里面把Library的选成Full 见下图
还有的说是添加什么宏之类的,我觉得太麻烦了,并没有那样去做。

而且,向上面那样做之后, 还不够,我试了之后还是同样的错误

既然都不可以,那怎么做呢?

请思考一下,printf是哪里的函数?
没错, 是C里面的函数。既然根源清楚了,那我们就可以大胆的尝试一下下面的方法了。

在uart.c文件里面包含一个stdio.h的头文件

然后编译uart.c文件

舒服~~~~~~

2、但是,还没完

当在主函数里面编译的时候出现了以下警告

作为一个追求完美的人,这怎么能行

同理, 在前面包含stdio.h这个头就完美了

0 error(s),0 warning(s)

ok,完美!!! 希望这篇博客对你有所帮助

**不被重重的击倒,又怎么能华丽的站起。   加油吧!**

关于重定向printf出错 Error[Pe020]: identifier FILE is undefined 解决方案相关推荐

  1. STM32用IAR调试出现Error[Pe020]: identifier FILE is undefined 解决方法

    这是在调试示例程序RTC中的Calendar时候遇到的问题,错误定位到PUTCHAR_PROTOTYPE处 解决办法: 需要在IAR的Options -> General Options -&g ...

  2. IAR Error[Pe020]: identifier 'FILE' is undefined 解决方法

    这是在调试示例程序RTC中的Calendar时候遇到的问题,错误定位到PUTCHAR_PROTOTYPE处 解决办法: 需要在IAR的Options -> General Options -&g ...

  3. STM32单片机报错error: #20: identifier “TIM2_IRQn“ is undefined

    stm32单片机编译报错:error: #20: identifier "TIM2_IRQn" is undefined 出错的原因:选择单片机型号头文件不对 出错例字如下图: 编 ...

  4. 解决Stm32出现..\HARDWARE\ADC\adc.c(22): error: #20: identifier ADC_InitTypeDef is undefined异常

    笔者本科阶段读的是通信工程,因此各种比赛或者作业免不了要使用stm32.而使用stm32中将几个单独的工程合并起来更是家常便饭,而合并工程中常遇到的一个问题是已经将.c文件添加到工程中,而且路径也配置 ...

  5. 实际已经定义却出现 error: #20: identifier xxx is undefined 的错误

    前言 本博文基于MDK5.26的C环境编写,不过跟芯片没关系,是软件调试出现的问题: 本博文并一定适合其他原因引起的未定义错误,仅适合"已经定义了xxx,但却报没定义的错"这种情况 ...

  6. identifier “bind“ is undefined 解决方案

    今天在编写多线程的时候遇到一个identifier "bind" is undefined问题,下面是我的源代码: //使用std::bind()函数绑定对象及其普通成员函数 #i ...

  7. stm32编译错误error: #20: identifier “USART_IT_RXNE“ is undefined

    基于stm32搭建好keil工程框架,编译时出现几十个error,然后仔细看了下,都是些未定义错误. 想到可能时头文件问题,然后重新检查了下头文件的包含关系,仍然存在错误: 然后百度了下类似的问题,发 ...

  8. error: #20: identifier “uint16_t“ is undefined

    出现问题的原因是没有添加#include <string.h>,这个CCS自带库里面有,需要在properties里面的include options里面添加"\ccs6.3\c ...

  9. ..\Src\INA226.c(142): error: #20: identifier “GPIO_IDR_IDR9“ is undefined

    系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言 前言 送 ...

  10. error: #20: identifier u16 is undefined

    发现是头文件里#include"system.h" ,放在void TIM4_Init(u16 pre,u16 psc);下面所导致的

最新文章

  1. 服务器 新文件病毒扫描,部署 Seafile 专业版服务器
  2. 建立适合大数据成功的团队
  3. U-Boot 之一 零基础编译 U-Boot 过程详解 及 编译后的使用说明
  4. 【jetson nano】两台ubuntu ssh远程连接控制
  5. Veeam在思科2017年合作伙伴峰会上荣获ISV年度最佳合作伙伴全球奖
  6. 14门教程带你全面入门Linux
  7. java 十六进制转十进制_JAVA知识-分析JAVA中的重点和难点
  8. sp 导出unity哪个_GitHub上发现的一个导出Unity3D场景数据的工具
  9. java while语句_Java while循环
  10. sql azure 语法_在Azure Data Studio中计划SQL笔记本
  11. 【转载】 C#中使用Sum方法对List集合进行求和操作
  12. 传输层的端口与TCP标志中的URG和PSH位
  13. 大数据、智慧城市与智慧交通 (全集)
  14. 通俗易懂理解URI和URL的区别
  15. MySQL(管理员常用命令)
  16. 解决element为新版的 vue-cli 准备了相应的 Element 插件的报错(缺少头像组件)
  17. MySQL常用的关键字查询用法
  18. java swrt_GitHub - EldersJavas/OpenwrtCompileScript at 68a369bb068dfcf94c9f41386bf377f680f39eac
  19. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(一)
  20. STM32F7--->FMC(可变存储控制器) Flexible Memory Controller

热门文章

  1. 用ado.net取数据库中table、column的信息
  2. thinkphp5项目--企业单车网站(二)
  3. 【高级编程技术作业】第六周
  4. MyBatis_Study_004(动态代理)
  5. 第95天:CSS3 边框、背景和文字效果
  6. 复杂,软件的大敌![转]
  7. 共享onload事件
  8. WEB自动化(Python+selenium)的API
  9. Visual Studio 要求导入 pfx 密钥以及导入后依然要求导入的解决办法
  10. McAfee ePO4.5 admin账号密码忘记的解决办法