将数组定义到XRAM中
大佬们,问下,在使用STC8A8K64D4定义数组时,由于数组中的数太多了,所以我就使用XDATA//定义扩展RAM大小
#define RAM_SIZE 8192
//测试数组 使用xdata定义后该变量的数据将存储在外部扩展ram中
unsigned char xdata Test_Array1; //数组的总大小不超过8192
已经定义了,但是在向数组理存数据的时候。如下
Test_Array1={1,2};
运行后出现这个错误:BUS.C(15): error C231: 'Test_Array1': redefinition
我已经定义了Test_Array1这个数组,为什么不能像普通数组一样,往数组内自由存储数据呢?
麻烦指点下,谢谢了
报错不是内存不给用,是你重复定义了同样名字的数组,
Test_Array1={1,2};这句你本意是数组赋值的吧?
但数组只有在声明时候才能这样赋值.
声明过后想要再赋值就不能用这种方法了
需要逐个数组成员单独赋值.比如:
Test_Array1=1,Test_Array1=2;
当数组成员数量较多,每个成员有规律时候,一般常用一个循环来逐个给数组成员赋值, 你这语法有问题吧,Test_Array1={1,2}这句说初始化不像初始化,赋值不像赋值。unsigned char xdata Test_Array1 这句就是定义数组并初始化了,后面不允许再次初始化。如果是赋值就应该写成Test_Array1=1的样子 //定义扩展RAM大小
#define RAM_SIZE 8192
//测试数组 使用xdata定义后该变量的数据将存储在外部扩展ram中
unsigned char xdata Test_Array1; //数组的总大小不超过8192
这一步是定义了数组了,所以unsigned char xdata Test_Array1,默认省去了{}。
但是:Test_Array1={1,2},等于又定义了一次。。。
应该是
Test_Array1=x
Test_Array1=y
Test_Array1=z
......
这样才能完成赋值。
当赋值是规律增加或减少的,可以用for循环来完成增减。可以++、--,也可以+=或者-=。
单独操作某一个,那就Test_Array1=b。
网老四 发表于 2024-7-3 21:42
报错不是内存不给用,是你重复定义了同样名字的数组,
Test_Array1={1,2};这句你本意是数组赋值的吧?
但数 ...
{:5_332:}好的,谢谢了 xxxevery 发表于 2024-7-3 22:19
你这语法有问题吧,Test_Array1={1,2}这句说初始化不像初始化,赋值不像赋值。unsigned char xdata Test ...
{:5_332:}好的
谢谢了 Yim_Hom 发表于 2024-7-3 22:51
//定义扩展RAM大小
#define RAM_SIZE 8192 ...
{:5_332:}
好的,谢谢了哈 把定义和赋值搞混了吧 学习了,看来数组使用还是要认真。 soma 发表于 2024-7-4 20:38
学习了,看来数组使用还是要认真。
对的
页:
[1]
2