我有一個用於通信協議(USB設備描述符)的數組。該協議在數組標題中調用數組大小。所以我想這樣做(這是禁止的):如何把數組大小內的數組初始化本身在C?
static uint8_t array[]= {
TYPE,
sizeof(array),
other data...
};
的陣列中的存儲器的只讀部分是,我不能在事後重寫相關的細胞,而我不是真的願意複製它來覆蓋單元(它在最小的嵌入式系統中)。我需要它看起來像「在電線上」,因爲它會通過DMA。
是否有某種魔法可以解決這個限制?我願意使用C99或GNU擴展。我不會爲此而切換,但我也對C++解決方案感到好奇。
並指定在聲明數組的大小,例如作爲'靜態uint8_t數組[18] = ...'大概沒有比'爲什麼不用手工輸入數組的大小而不使用sizeof'更有幫助的解決方案? – Tommy 2013-04-29 19:34:01
「數組在內存的只讀部分」除非省略'const',否則不能。 – 2013-04-29 19:39:51
@danielFischer很好,趕上,謝謝。但是無論有沒有'const',這些東西都會在內存映射的一個鎖定部分中結束。 – nraynaud 2013-04-29 19:58:16