存储在闪存中的字符串数组,其中包含Arduino中的PROGMEM

时间:2013-01-14 19:45:57

标签: c arduino

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

  

变量'menu'必须是const才能通过'属性((progmem))'

进入只读部分

我正在使用此代码:

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 - how to use PROGMEM to store and read char array ,但我看到的所有答案都不包含const关键字,这让我相信它们是在它之前编写的需要。

如何解决这个问题?


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

就是答案。

1 个答案:

答案 0 :(得分:16)

尝试

const char* const menu[] PROGMEM...

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