在使用 atmega32 进行 AVR 编程时,我无法为数组赋值。我收到错误消息:
只读 str[i] 的赋值
我究竟做错了什么?
我的代码是:
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
在使用 atmega32 进行 AVR 编程时,我无法为数组赋值。我收到错误消息:
只读 str[i] 的赋值
我究竟做错了什么?
我的代码是:
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
声明了数组const
,表明它不应该被修改。在微控制器上,这甚至更有意义,因为const
变量可以(有效地)存储在只读存储器(例如闪存、EEPROM 或 ROM)中。
完全同意杰瑞...
如果您需要将数组作为 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 内存!!!
如果是这样,那么编译器通常会抛出一些错误......但并非总是如此(有时堆栈没有完全考虑在内)