微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > C警告:extended constant initialiser used该如何去除?

C警告:extended constant initialiser used该如何去除?

时间:10-02 整理:3721RD 点击:
如题,在keil中遇见了这个警告,却怎么也不能去除。求指教。
const uint32_t GPDMA_LUTPerAddr[] = {
                  ((uint32_t)&LPC_SSP0->DR),    // SSP0 Tx
                  ((uint32_t)&LPC_SSP0->DR),
                  .
}
其中,LPC_SSP0宏定义如下,
#define LPC_SSP0              ((LPC_SSP_TypeDef       *) LPC_SSP0_BASE     )
LPC_SSP_TypeDef 是一结构体,
LPC_SSP0_BASE是ARM的一物理地址,
然后keil编译时,就出现了这个警告,warning:  #1296-D: extended constant initialiser used。这个数字空间大小为24元素,所以有24个重要的错误
求指教该如何去除这些警告?

用#define的方式定义 程序执行中直接一个个变量的地址来用,不要定义什么结构体什么的了

看看ARM官方给的答案:http://infocenter.arm.com/help/i ... c.faqs/ka15182.html

这样肯定是可以实现的,但是比较麻烦,一个不小心就会写错了。用结构体写,直接通过通道来查找很方便,也不会出错

谢谢,非常感谢,参照你提供的官方答案,问题解决了。谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top