天天看点

*(volatile unsigned long *) 语法

转载自:http://www.cnblogs.com/zhangpengshou/p/3597646.html

#define GPJ2CON (*(volatile unsigned long *) xE0200280)
           

开始对于上面的语法不太理解,但通过拆分,我们可以看的更明白:

1、

(unsigned long *)

变量,代表“变量”是一个unsigned long类型的指针;例如:

(unsigned long *)i

,语句中 i 即为

(unsigned long *)

的一个指针;

2、volatile是一个修饰符,告诉编译器此段代码不要优化;因此,

(volatile unsigned long *)

变量,意思是未优化指针类型的变量;例如:

(volatile unsigned long *)i

,语句中 i 即为

(volatile unsigned long *)

的一个指针;

3、

(volatile unsigned long *) 0xE0200280

,此处把变量换成了固定地址,意思是

(volatile unsigned long *)

指针指向固定的地址 0xE0200280

4、前面再加一个

*

,即

(volatile unsigned long *) 0xE0200280

代表 GPJ2CON 是一个变量,我们既可以给固定地址中赋值,也可以从固定地址中取值。例如:

(volatile unsigned long *)i

,语句中 i 即为

(volatile unsigned long *)

的一个指针,而

*i

即代表 i 中存储的值,我们既可以对其赋值,又可以从其中取值