*(volatile unsigned long *) 語法


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

開始對於上面的語法不太理解,但通過拆分,我們可以看的更明白:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM