打印

[讨论]keil5.27下 工程选择compiler5 vs compiler6的区别

[复制链接]
3684|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvben5d|  楼主 | 2019-4-13 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lvben5d 于 2019-4-13 17:47 编辑

最近使用上keil5.27里,对工程的编译器选择版本有user default compiler version 5(以前常用)user default compiler version 6 , 以及 v6.11的3个区别。  在-O0编译优化等级下 使用user default compiler version 6 和v6.11,会将原本我25多K的工程FLASH,编译增加到40多K,而user default compiler version 5只有25多K。使用-01优化后,两者code才基本相同。
我所发现user default compiler version 6 版本相比ver 5前者 除了编译速度有较大提升外,还在C/C++ 语言栏 默认支持c99语法(我发现不少稍微优秀一些的代码用法都是要在c99下支持体现的 尤其是GD32E103的usb这块)
version 6 编译器下,不支持如下应用 : *(__packed uint32_t *)dest = *fifo;   而version 5 编译器下,编译不报错。

使用特权

评论回复
沙发
airwill| | 2019-4-16 11:09 | 只看该作者
看样子,编译器做了很大的改进,两个版本共存, 是为了开发者的习惯咯

使用特权

评论回复
板凳
sonicll| | 2019-4-23 14:47 | 只看该作者
本帖最后由 sonicll 于 2019-4-23 14:51 编辑

*(__packed uint32_t *)dest = *fifo;
这句在armcc6下报错是因为__packed这个宏定义,修改为__PACKED就可以了。armcc6的一些__attribute__关键字有变化,和armcc5不一样

使用特权

评论回复
地板
lvben5d|  楼主 | 2019-4-23 17:10 | 只看该作者
本帖最后由 lvben5d 于 2019-4-23 17:13 编辑
sonicll 发表于 2019-4-23 14:47
*(__packed uint32_t *)dest = *fifo;
这句在armcc6下报错是因为__packed这个宏定义,修改为__PACKED就可以 ...

我试过 __PACKED  不行的哈   这里应用  完全可以不用字节对齐,我实测功能没影响。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

746

帖子

12

粉丝