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

#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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版