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

2019-07-14 16:25发布

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用,不能定义为指针.
谁有办法消除这个警告???????????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
naiztycheng
1楼-- · 2019-07-15 07:52
vywyewwx 发表于 2018-11-1 15:12
我也测试过读写数据,没问题,但是怎么消除keil报警,我工程有好几百个这样报警,看着不爽.
keil编译会警告 #1296-D:extended constant initialiser used ;

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

http://infocenter.arm.com/help/i ... c.faqs/ka15182.html
vywyewwx
2楼-- · 2019-07-14 18:37
如果  uint8_t         Data1[2];               
         uint16_t         Data2[10];   

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

不定义成结构体也不会有警告
这是个简单举例,实际上我一个结构体里还包含很多参数
naiztycheng
3楼-- · 2019-07-14 23:27
const uint32 addr1 = (uint32)(&READ.Dat1[0]);
const uint32 addr2 = (uint32)(&READ.Dat1[1]);

使用vs简单测试语法,没问题
vywyewwx
4楼-- · 2019-07-15 02:24
naiztycheng 发表于 2018-11-1 14:57
const uint32 addr1 = (uint32)(&READ.Dat1[0]);
const uint32 addr2 = (uint32)(&READ.Dat1[1]);

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

一周热门 更多>