2013-06-29 5 views
1

В программировании AVR с помощью atmega32 я не могу присвоить значение массиву. Я получаю сообщение об ошибке:Я не могу присвоить значение массиву

Assignment of read-only str[i]

Что я делаю неправильно?

Мой код:

const char str[1000]; 
void Serial_tx(unsigned char ch) 
{ 
    for (i = 0; i < 10; i++) 
    { 
    str[i] = ch; 
    } 
} 

ответ

3

Массив объявляется const, указав, что он не должен быть изменен. На микроконтроллере это еще более значимо, поскольку переменные const могут храниться в (эффективно) постоянной памяти (например, Flash, EEPROM или ROM).

+0

ой! ошибка .. Nd я сделан .... :) –

0

полностью согласен с канистрой ...

просто нужно добавить, если вам нужен массив константным, то она должна быть объявлена ​​/ определяются следующим образом:

const char str[11]={'0','1','2','3','4','5','6','7','8','9',0 }; 

- но тис означает, что вы можете только чтение str [] во время выполнения !!!

, если вы хотите изменить содержание ул во время выполнения, чем он не может быть константной:

char str[1000]={0}; 

- это позволяет доступ на чтение/запись на время выполнения

остерегайтесь, что общий размер ваши неконстантные переменные, стеки и движок языка C/C++ не могут превышать память RAM целевого устройства !!!
Если это то компилятор обычно бросает ошибку ... , но не всегда (иногда стек не полностью учитывается)

Смежные вопросы