我正试图用C语言(初级-大学级别(解决一个项目,但我在一个函数中遇到了一个小问题。
我有两个定义为宏的寄存器:
#define register1 0x02004000
#define register2 0x02004200
我想访问第一个寄存器的内容,并将第二个寄存器的属性放入其中。
我做以下事情:
*register1 = *register2 + 2
但它不会起作用,因为"#定义";将寄存器定义为int。
那么,如何使用#define访问寄存器呢?
(这可能是一个糟糕的命题,但我仍在学习C:D(
您需要将常量强制转换为适当的指针类型。
因此,例如,如果这些中的每一个都指向一个int
,您将执行以下操作:
#define register1 ((int *)0x02004000)
#define register2 ((int *)0x02004200)
从技术上讲,你所拥有的并不是寄存器,而是内存地址。寄存器是CPU的一部分,没有地址。