![]() |
||
*停權中*
加入日期: Apr 2002 您的住址: 高雄
文章: 1,988
|
請教一個c語言問題
請問以下的意思,尤其是(volatile datum *) 部份,以前沒看過書上也沒有,感恩
#define BASE_ADDRESS (volatile datum *) 0x10000000 |
|||||||
![]() |
![]() |
*停權中*
加入日期: Jul 2002
文章: 72
|
引用:
你可以參考一下. ![]() http://blog.yam.com/swwuyam/article/12637559 |
|||
![]() |
![]() |
*停權中*
加入日期: Apr 2002 您的住址: 高雄
文章: 1,988
|
引用:
大概了解volatile功能,不過對於 (volatile datum *) 0x10000000,還是不懂,是強制轉型嗎?如果是的話這樣轉出來代表什麼呢?這斷程式碼是從O'REILLY 所出版的嵌入式系統使用c/c++裡的範例抄下來的,謝謝 |
|
![]() |
![]() |
*停權中*
加入日期: Jan 2008
文章: 4
|
引用:
前面有 define, 或在.h 裡, 應該是你少看了... 沒錯的話是 unsigned long (大部份是 bus 32bit, 不過要看 compiler) 你看的是檢查 memory 是吧? address bus, data bus ... etc |
|
![]() |
![]() |
*停權中*
加入日期: Jul 2002
文章: 72
|
我的理解,
#define BASE_ADDRESS (volatile datum *) 0x10000000 只是定義了一個位址 叫做BASE_ADDRESS,之後會拿來當一塊memory 的基礎. volatile 和datum 是它的屬性,我自己猜是給compiler 看的. volatile 我知道是不要讓它最佳化的意思. datum 我就不知道了. 也許寫篏入式系統的人會比較了解. 不能回答你的問題,不好意思. 上面是我自己的了解,也許誤人子弟了. ![]() |
![]() |
![]() |
Major Member
![]() 加入日期: Nov 2001
文章: 170
|
#define BASE_ADDRESS (volatile datum *) 0x10000000
簡單的說 就是把 0x10000000 的位址視為一個 datum type 的變數 精確的說 就是一個 指向 type 為 datum 的變數的指標,其指標指向的位址是 0x10000000 (volatile datum *) 是一個強制轉型的動作 |
![]() |
![]() |