天天看點

*(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 中存儲的值,我們既可以對其指派,又可以從其中取值