发 帖  
原厂入驻New
[问答] __FPU_PRESENT重定义出现大量的警告
308 STM32
分享
本人使用的是STM32f405+freertos
在使用fpu时如果预定义了__FPU_PRESENT=1则编译时会出现大量的警告
warning:  #47-D: incompatible redefinition of macro "__FPU_PRESENT"
提示我__FPU_PRESENT重复定义了,但此时fpu是可用的,大量警告特烦人
但如果不预定义__FPU_PRESENT=1,虽然编译成功并且无警告,但fpu功能是没启用的
微信截图_20191203023053.png 如图所示

0
奖励2积分
3 天前   评论 分享淘帖 邀请回答
4个回答
看了两天了,确实不知道咋整。基本确定就是头文件引用顺序的问题,但是一直搞不懂keil的编译顺序,所有问题还是解决不了,现在无奈做了一个折中的办法,修改stm32f405xx.h文件,把“#define __FPU_PRESENT             1U”注释掉,然后预定义里添加“__FPU_PRESENT=1”。这样不会报重定义的警告,而且fpu也能启动。
但是这样需要修改库文件,这样的做法总是不太好,希望各位大神们帮帮忙
incompatible   __FPU_PRESENT 重新定义不兼容
2 条评论
本帖最后由 lm12041204a 于 2019-12-4 21:38 编辑

宏重复定义,特别是多个头文件中都有定义,并且预编译指令不是完全周全的情况下(通常情况下也无法完全周全)。
定义外部变量有时也遇到类似问题。
修改工程选项试试,参考一下这个:

解决编译官方库中的project warning: #47-D: incompatible redefinition of macro
https://blog.csdn.net/jdwang001/article/details/21377793

解决keil常见的两类警告问题:WARNING
http://bbs.21ic.com/icview-2524150-1-1.html?fromuser=

编译SeggerRTT报错: warning: #47-D: incompatible redefinition of macro "SEGGER_RTT_LOCK"
https://blog.csdn.net/weixin_39752827/article/details/88708626

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表