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

#1296-D:extended constant initialiser used怎么消除

[复制链接]
STM-MCU 提问时间:2016-7-13 18:28 /
typedef struct
{
                uint8_t         Data1[2];               
                uint16_t         Data2[10];               
}USE_DATA;

USE_DATA USE    READ;

const uint32 addr1 = &READ.Dat1[0];
const uint32 addr2 = &READ.Dat1[1];

keil编译会警告 #1296-D:extended constant initialiser used ;
我需要addr1,addr2定义成uint32用,不能定义为指针.
谁有办法消除这个警告???????????

收藏 评论5 发布时间:2016-7-13 18:28

举报

5个回答
STM-MCU 回答时间:2016-7-13 18:30:23
补充 : 如果定义uint32 addr1 = &READ.Dat1[0];
uint32 addr2 = &READ.Dat1[1];
不会有警告,定义了const 就会有,
STM-MCU 回答时间:2016-7-13 18:35:12
如果  uint8_t         Data1[2];               
         uint16_t         Data2[10];   

const uint32 addr1 = (uint32_t)&Dat1[0];
const uint32 addr2 = (uint32_t)&Dat1[1];

不定义成结构体也不会有警告
这是个简单举例,实际上我一个结构体里还包含很多参数
watershade 回答时间:2016-7-13 21:37:01
const uint32 addr1 = (uint32)(&READ.Dat1[0]);
const uint32 addr2 = (uint32)(&READ.Dat1[1]);

使用vs简单测试语法,没问题
STM-MCU 回答时间:2016-7-13 21:52:36
watershade 发表于 2016-7-13 21:37
const uint32 addr1 = (uint32)(&READ.Dat1[0]);
const uint32 addr2 = (uint32)(&READ.Dat1[1]);

我也测试过读写数据,没问题,但是怎么消除keil报警,我工程有好几百个这样报警,看着不爽.
keil编译会警告 #1296-D:extended constant initialiser used ;

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

watershade 回答时间:2016-7-14 21:45:07
STM-MCU 发表于 2016-7-13 21:52
我也测试过读写数据,没问题,但是怎么消除keil报警,我工程有好几百个这样报警,看着不爽.
keil编译会警告 # ...

其实应该谢谢你,我没有遇到过这种问题。但是我帮你搜索到了,也涨了知识。

http://infocenter.arm.com/help/i ... c.faqs/ka15182.html

评分

参与人数 2ST金币 +4 收起 理由
七尺大儒 + 2 很给力!我看遇到了,这是不满足c标准导致的.
zero99 + 2 很给力!

查看全部评分

所属标签

相似问题

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