关于重定向printf出错 Error[Pe020]: identifier FILE is undefined 解决方案
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 解决方案相关推荐
- STM32用IAR调试出现Error[Pe020]: identifier FILE is undefined 解决方法
这是在调试示例程序RTC中的Calendar时候遇到的问题,错误定位到PUTCHAR_PROTOTYPE处 解决办法: 需要在IAR的Options -> General Options -&g ...
- IAR Error[Pe020]: identifier 'FILE' is undefined 解决方法
这是在调试示例程序RTC中的Calendar时候遇到的问题,错误定位到PUTCHAR_PROTOTYPE处 解决办法: 需要在IAR的Options -> General Options -&g ...
- STM32单片机报错error: #20: identifier “TIM2_IRQn“ is undefined
stm32单片机编译报错:error: #20: identifier "TIM2_IRQn" is undefined 出错的原因:选择单片机型号头文件不对 出错例字如下图: 编 ...
- 解决Stm32出现..\HARDWARE\ADC\adc.c(22): error: #20: identifier ADC_InitTypeDef is undefined异常
笔者本科阶段读的是通信工程,因此各种比赛或者作业免不了要使用stm32.而使用stm32中将几个单独的工程合并起来更是家常便饭,而合并工程中常遇到的一个问题是已经将.c文件添加到工程中,而且路径也配置 ...
- 实际已经定义却出现 error: #20: identifier xxx is undefined 的错误
前言 本博文基于MDK5.26的C环境编写,不过跟芯片没关系,是软件调试出现的问题: 本博文并一定适合其他原因引起的未定义错误,仅适合"已经定义了xxx,但却报没定义的错"这种情况 ...
- identifier “bind“ is undefined 解决方案
今天在编写多线程的时候遇到一个identifier "bind" is undefined问题,下面是我的源代码: //使用std::bind()函数绑定对象及其普通成员函数 #i ...
- stm32编译错误error: #20: identifier “USART_IT_RXNE“ is undefined
基于stm32搭建好keil工程框架,编译时出现几十个error,然后仔细看了下,都是些未定义错误. 想到可能时头文件问题,然后重新检查了下头文件的包含关系,仍然存在错误: 然后百度了下类似的问题,发 ...
- error: #20: identifier “uint16_t“ is undefined
出现问题的原因是没有添加#include <string.h>,这个CCS自带库里面有,需要在properties里面的include options里面添加"\ccs6.3\c ...
- ..\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.职业规划 文章目录 前言 前言 送 ...
- error: #20: identifier u16 is undefined
发现是头文件里#include"system.h" ,放在void TIM4_Init(u16 pre,u16 psc);下面所导致的
最新文章
- 服务器 新文件病毒扫描,部署 Seafile 专业版服务器
- 建立适合大数据成功的团队
- U-Boot 之一 零基础编译 U-Boot 过程详解 及 编译后的使用说明
- 【jetson nano】两台ubuntu ssh远程连接控制
- Veeam在思科2017年合作伙伴峰会上荣获ISV年度最佳合作伙伴全球奖
- 14门教程带你全面入门Linux
- java 十六进制转十进制_JAVA知识-分析JAVA中的重点和难点
- sp 导出unity哪个_GitHub上发现的一个导出Unity3D场景数据的工具
- java while语句_Java while循环
- sql azure 语法_在Azure Data Studio中计划SQL笔记本
- 【转载】 C#中使用Sum方法对List集合进行求和操作
- 传输层的端口与TCP标志中的URG和PSH位
- 大数据、智慧城市与智慧交通 (全集)
- 通俗易懂理解URI和URL的区别
- MySQL(管理员常用命令)
- 解决element为新版的 vue-cli 准备了相应的 Element 插件的报错(缺少头像组件)
- MySQL常用的关键字查询用法
- java swrt_GitHub - EldersJavas/OpenwrtCompileScript at 68a369bb068dfcf94c9f41386bf377f680f39eac
- 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(一)
- STM32F7--->FMC(可变存储控制器) Flexible Memory Controller
热门文章
- 用ado.net取数据库中table、column的信息
- thinkphp5项目--企业单车网站(二)
- 【高级编程技术作业】第六周
- MyBatis_Study_004(动态代理)
- 第95天:CSS3 边框、背景和文字效果
- 复杂,软件的大敌![转]
- 共享onload事件
- WEB自动化(Python+selenium)的API
- Visual Studio 要求导入 pfx 密钥以及导入后依然要求导入的解决办法
- McAfee ePO4.5 admin账号密码忘记的解决办法