最新版IAR For ARM 8.22.1用C++写代码去掉warning方法...

2019-12-09 20:05发布

本帖最后由 jangyouhua 于 2018-2-25 17:02 编辑

农历新年伊始,装了IAR For Arm最新版 IAR For ARM 8.22.1版, 该版本改进了IDE的性能
同时支持 "CMSIS version 5.3 including CMSIS NN for machine learning",说明白了,就是支持了最新的CMSIS 5.3.0
因为该版本内置了最新的CMSIS 5.3.0,打开老工程时,会出现几个问题,这里根据本人的摸索,将解决的方法
写出来以节约遇到此问题的同行!
一、安装完后,直接打开老工程(老版本的CMSIS库),编泽可以通过但会在build显示窗提示一堆的
"
Warning: The header file 'cmsis_iar.h' is obsolete and should not be used.
         A sutiable version is automatically included from the CMSIS-core package.
         This file will be removed in a future release.

"
该warning会很多!如下图1所示

提示的意思是cmsis_iar.h文件太旧不建议使用,IAR自动从自带的CMSIS-core包提取新的用!
你勾或不勾选下图"Use CMSIS"选项,这个warning始终出现!

解决办法,去掉老工程用的CMSIS目录下的包包含,去掉如下图所示包含目录!
再次编泽,出错

经查是由mpu_armv7.h文件中函数参数关健字“__RESTRICT”引起的,__RESTRICT是C99支持的特性(如何用自已查),C++不支持
而我的工程是用c++编写的,但头文件中也指定了C编泽"
#ifdef __cplusplus
extern "C" {
#endif
.......
"


后来在网上找到了解决办法:
Options->C/C++ Compiler->Extra Options
勾选 Use command line options
添加以下代码
“--enable_restrict” 就能够在C++的情况下编译通过了.如图2所示!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
jangyouhua
1楼-- · 2019-12-10 13:39
楼上的,还有什么坑?我一直用着,8.xx.x这版稳定多了,天天用没发现什么问题。
liugang1986
2楼-- · 2019-12-10 16:16
感谢LZ,遇到同样的问题,使用你找到的方法解决了。另外感觉这个版本的却比上个版本流畅多了,不论是打开界面,还是运行调试。
iskywolf
3楼-- · 2019-12-10 16:58
 精彩回答 2  元偷偷看……
web110
4楼-- · 2019-12-10 22:10
官网下载速度达到3M了,非常好!
OneRain
5楼-- · 2019-12-10 23:10
iskywolf 发表于 2018-3-8 09:11
关于'cmsis_iar.h'的warning没看到楼主去掉哪个包含目录。找到另一个解决办法:
1. 进入iar安装目录下这个 ...

你这个方法还是有点问题,我直接按照你说的改,好像还是不行。。。我修改了一下,完全可以。。。
1. 进入iar安装目录下这个目录:
c:Program Files (x86)IAR SystemsEmbedded Workbench 8.22armCMSISCoreInclude
2.复制cmsis_iccarm.h一份文件出来,改名为cmsis_iar.h
3.将armCMSISCoreIncludearmincc下的cmsis_iar.h改名为cmsis_iar.old
4.将第3步的cmsis_iar.h文件复制到armCMSISCoreIncludearmincc下。
诺飞
6楼-- · 2019-12-11 01:57
警告的意识是 cmsis_iar.h 这文件废弃了,将来的版本将要删除,赶紧别用了。
从根源上解决,全项目文本搜索 cmsis_iar.h,找到的换成 cmsis_iccarm.h 就可以了。
找到两文件core_cmInstr.h 和 core_cmFunc.h 里有,换完了世界清净了。

一周热门 更多>