STM-MCU 发表于 2016-7-13 18:28:40

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

typedef struct
{
                uint8_t         Data1;               
                uint16_t         Data2;               
}USE_DATA;

USE_DATA USE    READ;

const uint32 addr1 = &READ.Dat1;
const uint32 addr2 = &READ.Dat1;

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

STM-MCU 发表于 2016-7-13 18:30:23

补充 : 如果定义uint32 addr1 = &READ.Dat1;
uint32 addr2 = &READ.Dat1;
不会有警告,定义了const 就会有,

STM-MCU 发表于 2016-7-13 18:35:12

如果uint8_t         Data1;               
         uint16_t         Data2;   

const uint32 addr1 = (uint32_t)&Dat1;
const uint32 addr2 = (uint32_t)&Dat1;

不定义成结构体也不会有警告
这是个简单举例,实际上我一个结构体里还包含很多参数

watershade 发表于 2016-7-13 21:37:01

const uint32 addr1 = (uint32)(&READ.Dat1);
const uint32 addr2 = (uint32)(&READ.Dat1);

使用vs简单测试语法,没问题

STM-MCU 发表于 2016-7-13 21:52:36

watershade 发表于 2016-7-13 21:37
const uint32 addr1 = (uint32)(&READ.Dat1);
const uint32 addr2 = (uint32)(&READ.Dat1);



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

watershade 发表于 2016-7-14 21:45:07

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

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

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka15182.html
页: [1]
查看完整版本: #1296-D:extended constant initialiser used怎么消除