[問題] Offset

看板C_and_CPP作者 (大魯閣_最強打者)時間7年前 (2016/08/01 15:16), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 問題(Question): #define PAD_CTRL_BASE 0x800 #define OFFSET(x) (unsigned int) (&((struct pad_signals *)(PAD_CTRL_BASE))->x) struct pad_signals { int gpmc_ad0; int gpmc_ad1; int gpmc_ad2; int gpmc_ad3; int gpmc_ad4; int gpmc_ad5; ... } 例: 取值 OFFSET(gpmc_ad3); 請問OFFSET那邊 是如何取到位移值的 看起來好像把 gpmc_ad3的位址 ,變成用int為單位 小弟看不是很懂.. 請大大賜教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.98.177.194 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1470035799.A.3FF.html

08/01 18:16, , 1F
轉型成指向pad_signals的指標後,再取值的位址,再轉型
08/01 18:16, 1F

08/01 18:16, , 2F
成unsigned int
08/01 18:16, 2F

08/01 18:18, , 3F
應該就是將PAD_CTRL_BASE對應到pad_signals的格式,在32
08/01 18:18, 3F

08/01 18:20, , 4F
bit下,&gpmc_ad0=0x800, &gpmc_adr2=0x804依此類推
08/01 18:20, 4F

08/01 19:20, , 5F
喔喔~ 大概看懂了 感謝B大
08/01 19:20, 5F

08/01 19:22, , 6F
不過 &gpmc_adr2 應該等於0x808 ?
08/01 19:22, 6F

08/01 20:42, , 7F
啊對,我是要打&gpmc_adr1 XD
08/01 20:42, 7F
文章代碼(AID): #1NdlTNF_ (C_and_CPP)