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个重要的错误
求指教该如何去除这些警告?
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
这样肯定是可以实现的,但是比较麻烦,一个不小心就会写错了。用结构体写,直接通过通道来查找很方便,也不会出错
谢谢,非常感谢,参照你提供的官方答案,问题解决了。谢谢