[英]array initialisation in C issue
我在我的标头中初始化数组时遇到了一个有趣的问题。
我有:
static u32 TxBuffer_Data[MAX_PKT_LEN_WORDS] = { 10 };
static u32 RxBuffer_Data[MAX_DMA_RX_FIFOMODE_WORDS] = { 0 };
现在,我希望两者都在嵌入式处理器的 .data 部分内,即在编译时分配并初始化,理想情况下为零。
现在,这里的语法根据如何将数组的所有成员初始化为相同的值是正确的? .
当我运行我的代码时,我获取了这两个缓冲区的地址,Txbuffer 确实在 .data 区域内,但是 RxBuffer 在 .bss 内,这是为非初始化编译时分配的变量保留的。 如果我将 { 0 } 更改为 { 10 },则 RxBuffer 会正确放入 .data 部分。
为什么我不能将数据初始化为零并且仍然将其定义为已初始化?
谢谢。 埃德
bss 部分中的数据是零初始化的。 将数组声明为:
static u32 RxBuffer_Data[MAX_DMA_RX_FIFOMODE_WORDS] = { 0 };
或者
static u32 RxBuffer_Data[MAX_DMA_RX_FIFOMODE_WORDS];
其实是一样的。 在这两种情况下,数组都是零初始化的,编译器很可能会将数组放在 bss 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.