10

我正在使用 AVR-GCC 版本 4.7.0,当我尝试在闪存中创建字符串数组时,我收到错误:

变量 'menu' 必须是 const 才能通过 '<strong>attribute((progmem))' 放入只读部分</p>

我正在使用这段代码:

const char menu0[] PROGMEM = "choice0";
const char menu1[] PROGMEM = "choice1";
const char menu2[] PROGMEM = "choice2";
const char menu3[] PROGMEM = "choice3";
const char menu4[] PROGMEM = "choice4";
const char menu5[] PROGMEM = "choice5";

const char *menu[] PROGMEM = {menu0, menu1, menu2, menu3, menu4, menu5};

我已经阅读了 Stack Overflow 问题C - 如何使用 PROGMEM 存储和读取 char array,但我看到的所有答案都不包含const关键字,这让我相信它们是在需要之前编写的。

如何解决这个问题?


const char * const menu[] PROGMEM = {menu0, menu1, menu2, menu3, menu4, menu5};

是答案。

4

1 回答 1

17

尝试

const char* const menu[] PROGMEM...

const char*因此,数组本身是常量,而不是像在原始代码中那样的可变指针数组。

于 2013-01-14T19:48:00.280 回答