2013-01-14 7 views
8

Ich verwende AVR-GCC-Version 4.7.0, und wenn ich ein Array von Strings in Flash-Speicher zu erstellen versuchen, erhalte ich die Fehlermeldung:Einen Array von Strings in Flash mit PROGMEM in Arduino gespeichert

variable ‘menu’ must be const in order to be put into read-only section by means of ‘attribute((progmem))’

ich verwende diesen Code:

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}; 

ich habe bereits Stack-Überlauf Frage C - how to use PROGMEM to store and read char array, aber alle Antworten, die ich nicht sehen, sind das const Schlüsselwort, das macht mich glauben, dass sie geschrieben wurden, bevor es nötig war.

Wie behebt man dieses Problem?


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

war die Antwort.

+0

Versuchen Sie dies: 'const char * const Menü [] ...' – imreal

Antwort

16

Versuchen

const char* const menu[] PROGMEM... 

So ist die Anordnung selbst konstant ist, keine änderbarer Array von const char* Zeigern, wie es im ursprünglichen Code war.

+0

Ja, danke. Ich habe das gerade probiert und wollte die Sache posten. Danksagungen rundum. – favilo

+0

Der Syntaxfehler ist jetzt weg aber ich kann die Logik nicht verstehen .... –