PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
alv
*停權中*
 

加入日期: Apr 2002
您的住址: 高雄
文章: 1,988
請教一個c語言問題

請問以下的意思,尤其是(volatile datum *) 部份,以前沒看過書上也沒有,感恩
#define BASE_ADDRESS   (volatile datum *) 0x10000000
     
      
舊 2008-01-30, 05:35 PM #1
回應時引用此文章
alv離線中  
a_ei
*停權中*
 

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


你可以參考一下.
http://blog.yam.com/swwuyam/article/12637559
 
舊 2008-01-30, 05:46 PM #2
回應時引用此文章
a_ei離線中  
alv
*停權中*
 

加入日期: Apr 2002
您的住址: 高雄
文章: 1,988
引用:
作者a_ei


大概了解volatile功能,不過對於
(volatile datum *) 0x10000000,還是不懂,是強制轉型嗎?如果是的話這樣轉出來代表什麼呢?這斷程式碼是從O'REILLY 所出版的嵌入式系統使用c/c++裡的範例抄下來的,謝謝
舊 2008-01-30, 06:29 PM #3
回應時引用此文章
alv離線中  
八豆妖
*停權中*
 
八豆妖的大頭照
 

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

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

你看的是檢查 memory 是吧? address bus, data bus ... etc
舊 2008-01-30, 07:12 PM #4
回應時引用此文章
八豆妖離線中  
a_ei
*停權中*
 

加入日期: Jul 2002
文章: 72
我的理解,
#define BASE_ADDRESS   (volatile datum *) 0x10000000

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

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

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

不能回答你的問題,不好意思.
上面是我自己的了解,也許誤人子弟了.
舊 2008-01-30, 07:16 PM #5
回應時引用此文章
a_ei離線中  
rockindy
Major Member
 

加入日期: Nov 2001
文章: 170
#define BASE_ADDRESS   (volatile datum *) 0x10000000
簡單的說
就是把 0x10000000 的位址視為一個 datum type 的變數
精確的說
就是一個 指向 type 為 datum 的變數的指標,其指標指向的位址是 0x10000000

(volatile datum *) 是一個強制轉型的動作
舊 2008-01-30, 07:26 PM #6
回應時引用此文章
rockindy離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是04:27 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。