2013-01-14 51 views
8

Tôi đang sử dụng AVR-GCC phiên bản 4.7.0, và khi tôi cố gắng để tạo ra một mảng các chuỗi trong bộ nhớ FLASH tôi nhận được lỗi:Một mảng các chuỗi được lưu trữ trong flash với PROGMEM trong Arduino

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

tôi đang sử dụng mã này:

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

tôi đã đọc stack Overflow câu hỏi C - how to use PROGMEM to store and read char array, nhưng tất cả các câu trả lời tôi thấy không bao gồm các từ khóa const mà làm cho tôi tin rằng họ được viết trước khi nó là cần thiết.

Làm cách nào để khắc phục sự cố này?


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

là câu trả lời.

+0

Hãy thử điều này: 'const char * const menu [] ...' – imreal

Trả lời

16

Hãy thử

const char* const menu[] PROGMEM... 

Vì vậy, các mảng chính nó là không đổi, không phải là một mảng có thể thay đổi các const char* con trỏ, vì nó là trong mã gốc.

+0

Có, cảm ơn bạn. Tôi thực sự chỉ thử điều đó, và chuẩn bị đăng sự thật. Đánh giá cao tất cả các xung quanh. – favilo

+0

Lỗi cú pháp hiện đã biến mất nhưng tôi không thể hiểu được logic .... –

Các vấn đề liên quan