0

在使用 atmega32 进行 AVR 编程时,我无法为数组赋值。我收到错误消息:

只读 str[i] 的赋值

我究竟做错了什么?

我的代码是:

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

2 回答 2

3

声明了数组const,表明它不应该被修改。在微控制器上,这甚至更有意义,因为const变量可以(有效地)存储在只读存储器(例如闪存、EEPROM 或 ROM)中。

于 2013-06-29T11:23:38.790 回答
0

完全同意杰瑞...

如果您需要将数组作为 const 只需要添加,那么它应该像这样声明/定义:

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

- 但是这意味着您只能在运行时读取 str[] !!!

如果您想在运行时更改 str 的内容而不是 const:

char str[1000]={0};

- 这允许您在运行时进行读/写访问

请注意,非 const 变量、堆栈和 C/C++ 语言引擎的总大小不能超过目标设备 RAM 内存!!!
如果是这样,那么编译器通常会抛出一些错误......但并非总是如此(有时堆栈没有完全考虑在内)

于 2013-12-03T23:38:07.957 回答