繁体   English   中英

C问题中的数组初始化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM