PCDVD數位科技討論區

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)

alv 2008-01-30 05:35 PM

請教一個c語言問題
 
請問以下的意思,尤其是(volatile datum *) 部份,以前沒看過書上也沒有,感恩
#define BASE_ADDRESS   (volatile datum *) 0x10000000

a_ei 2008-01-30 05:46 PM

引用:
作者alv
請問以下的意思,尤其是(volatile datum *) 部份,以前沒看過書上也沒有,感恩
#define BASE_ADDRESS   (volatile datum *) 0x10000000


你可以參考一下. :)
http://blog.yam.com/swwuyam/article/12637559

alv 2008-01-30 06:29 PM

引用:
作者a_ei


大概了解volatile功能,不過對於
(volatile datum *) 0x10000000,還是不懂,是強制轉型嗎?如果是的話這樣轉出來代表什麼呢?這斷程式碼是從O'REILLY 所出版的嵌入式系統使用c/c++裡的範例抄下來的,謝謝

八豆妖 2008-01-30 07:12 PM

引用:
作者alv
大概了解volatile功能,不過對於
(volatile datum *) 0x10000000,還是不懂,是強制轉型嗎?如果是的話這樣轉出來代表什麼呢?這斷程式碼是從O'REILLY 所出版的嵌入式系統使用c/c++裡的範例抄下來的,謝謝

前面有 define, 或在.h 裡, 應該是你少看了... 沒錯的話是 unsigned long (大部份是 bus 32bit, 不過要看 compiler)

你看的是檢查 memory 是吧? address bus, data bus ... etc

a_ei 2008-01-30 07:16 PM

我的理解,
#define BASE_ADDRESS   (volatile datum *) 0x10000000

只是定義了一個位址 叫做BASE_ADDRESS,之後會拿來當一塊memory 的基礎.

volatile 和datum 是它的屬性,我自己猜是給compiler 看的.
volatile 我知道是不要讓它最佳化的意思.
datum 我就不知道了.

也許寫篏入式系統的人會比較了解.

不能回答你的問題,不好意思.
上面是我自己的了解,也許誤人子弟了. :stupefy:

rockindy 2008-01-30 07:26 PM

#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。