你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

IAR与MDK5两者之间的语法兼容

[复制链接]
huahuahnu 提问时间:2022-1-5 16:40 / 未解决
在KeilMDK5工程里使用优化级别定义#pragma O0
在IAR中要写成#pragma optimize=none

在KeilMDK5工程里定义全局变量按地址对齐关键字__align(4)
在IAR中要写成#pragma data_alignment=4

目前使用宏定义的方式
#if defined   (__CC_ARM) /*!< ARM Compiler */
    __align(4) uint8_t KEY_VALUE[16]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
#elif defined ( __ICCARM__ ) /*!< IAR Compiler */
    #pragma data_alignment=4
    uint8_t KEY_VALUE[16]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
#endif

还有什么快捷的办法可以让代码兼容这两种编译环境?不要手动在每个地方这样写

收藏 1 评论2 发布时间:2022-1-5 16:40

举报

2个回答
STMWoodData 回答时间:2022-1-6 10:19:37

可以用宏将不同定义统一起来。

> > #if defined (CC_ARM) > #define _ALIGN(n) align(n) > #elif defined ( ICCARM ) > #define _ALIGN(n) data_alignment=n > #endif > > _ALIGN(4) > > uint8_t KEY_VALUE[16]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

huahuahnu 回答时间:2022-1-6 13:24:58

STMWoodData 发表于 2022-1-6 10:19
可以用宏将不同定义统一起来。</p>
<p>&gt;

[md]IAR Compiler额外加一个#pragma,所以不能用这种宏定义方式

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版