|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
弱弱地問一個關(guān)于宏定義 謝謝 |
| 作者:savagezp 欄目:DSP技術(shù) |
#define pLED (volatile unsigned CHAR *)0x203C0000 以上語句偶實在是看不懂啊 既不是指針的定義, 也不是指針的賦值 pLED不就是一個宏定義的常量嗎?? 里面那個*是什么意思啊,又加個括號。。。不懂啊 小弟看遍了《指針》相關(guān)教程,不得其解阿 請賜教。。謝謝 |
| 2樓: | >>參與討論 |
| 作者: zxm2006 于 2007/2/6 9:25:00 發(fā)布:
就是一個地址啊,可直接用指針方式對其賦值 所謂的指針不就是一個地址嘛,例如 CHAR *p; p=(CHAR *)malloc(10); 則p的值就是一個int型的32位的地址值,也就是指針, 下面只不過是更換了一種方式來定義指針, #define pLED (volatile unsigned CHAR *)0x203C0000 前面malloc分配的p的地址是OS分配的,用戶不知道的,但在嵌入式里面經(jīng)常需要對物理地址,也就是硬件寄存器操作,這些都是對地址的操作,所以還是必須要用到C語言里面的指針,但這個指針的值用戶是事先知道的,所以才有這種定義方式。 |
|
| 3樓: | >>參與討論 |
| 作者: kickgame 于 2007/2/6 10:45:00 發(fā)布:
沒有MMU的話 對于沒有MMU的操作系統(tǒng),直接去內(nèi)存地址進行強制類型轉(zhuǎn)換,然后這個宏定義就代表內(nèi)存地址0x203C0000的一個字節(jié)(CHAR)所指向的內(nèi)容。 * - 本貼最后修改時間:2007-2-11 16:57:09 修改者:kickgame |
|
| 4樓: | >>參與討論 |
| 作者: savagezp 于 2007/2/10 22:52:00 發(fā)布:
謝謝..謝謝 pLED是地址, 俺的理解是:pLED是指針,指向0x203C0000 ,, 而該地址只能放volatile unsigned CHAR型的變量,是嗎? |
|
| 5樓: | >>參與討論 |
| 作者: savagezp 于 2007/2/10 22:56:00 發(fā)布:
謝謝..謝謝 "0x203C0000之后" 為什么是之后啊,,?? 翻到一本關(guān)于"線性鏈表"的資料, 學習一下... " |
|
| 6樓: | >>參與討論 |
| 作者: embest007 于 2007/2/13 15:54:00 發(fā)布:
簡單的解釋 (volatile unsigned CHAR *)0x203C0000就是一個強制類型轉(zhuǎn)換,將0x203C0000這個常量轉(zhuǎn)換成一個地址就對了。 |
|
| 7樓: | >>參與討論 |
| 作者: savagezp 于 2007/4/30 21:09:00 發(fā)布:
謝謝 強制類型轉(zhuǎn)換……………… 這個還挺好理解的 謝謝 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |