簡體   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