目前我正在研究一个使用AVR ATMega8微处理器的嵌入式系统的工作。由于它有一个非常小的内存区域,我试图使用__regvar命令将一些全局变量存储到寄存器中。获取C_变量__regvar的地址
我需要从多个文件访问这些变量,而不是使所有这些变量都是外部的,我曾考虑过只使用外部指针指向第一个指针,并通过偏移量修改所有变量。
例如:
全球1 - > $的Reg4 全球2 - > $ REG5 全球3 - > $ REG6 全球4 - > $ REG7
指针= AddressOfGlobal1
有了这样我就可以通过添加1(1字节)修改所有寄存器
的问题是,我不能让这个变量的地址:
__no_init __regvar unsigned char [email protected] 4;
__no_init __regvar unsigned char [email protected] 5;
__no_init __regvar unsigned char [email protected] 6;
__no_init __regvar unsigned char [email protected] 7;
int myfunction(){
unsigned char* pointer = 0;
pointer = &ms_flags;
}
得到以下输出:
错误[Pe513]:“*无符号字符__regvar”不能被分配给类型的实体类型的值“无符号字符*” C:\用户\亚历克斯\ Desktop \ CentroStirling \ Progreso \ MSUIAR \ app \ init.c 39
我不太了解这个编译器,但是...如果变量总是存储在一个寄存器中,它怎么能有一个地址? – rodrigo
哦......非常愚蠢的问题。对不起,我有点困惑 – Aldridge1991