![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - 請教一個c語言問題
(https://www.pcdvd.com.tw/showthread.php?t=772608)
|
---|
請教一個c語言問題
請問以下的意思,尤其是(volatile datum *) 部份,以前沒看過書上也沒有,感恩
#define BASE_ADDRESS (volatile datum *) 0x10000000 |
引用:
你可以參考一下. :) http://blog.yam.com/swwuyam/article/12637559 |
引用:
大概了解volatile功能,不過對於 (volatile datum *) 0x10000000,還是不懂,是強制轉型嗎?如果是的話這樣轉出來代表什麼呢?這斷程式碼是從O'REILLY 所出版的嵌入式系統使用c/c++裡的範例抄下來的,謝謝 |
引用:
前面有 define, 或在.h 裡, 應該是你少看了... 沒錯的話是 unsigned long (大部份是 bus 32bit, 不過要看 compiler) 你看的是檢查 memory 是吧? address bus, data bus ... etc |
我的理解,
#define BASE_ADDRESS (volatile datum *) 0x10000000 只是定義了一個位址 叫做BASE_ADDRESS,之後會拿來當一塊memory 的基礎. volatile 和datum 是它的屬性,我自己猜是給compiler 看的. volatile 我知道是不要讓它最佳化的意思. datum 我就不知道了. 也許寫篏入式系統的人會比較了解. 不能回答你的問題,不好意思. 上面是我自己的了解,也許誤人子弟了. :stupefy: |
#define BASE_ADDRESS (volatile datum *) 0x10000000
簡單的說 就是把 0x10000000 的位址視為一個 datum type 的變數 精確的說 就是一個 指向 type 為 datum 的變數的指標,其指標指向的位址是 0x10000000 (volatile datum *) 是一個強制轉型的動作 |
所有的時間均為GMT +8。 現在的時間是03:38 PM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2025。