看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
boss0405: 轉型成指向pad_signals的指標後,再取值的位址,再轉型 08/01 18:16
boss0405: 成unsigned int 08/01 18:16
boss0405: 應該就是將PAD_CTRL_BASE對應到pad_signals的格式,在32 08/01 18:18
boss0405: bit下,&gpmc_ad0=0x800, &gpmc_adr2=0x804依此類推 08/01 18:20
Qoofate: 喔喔~ 大概看懂了 感謝B大 08/01 19:20
Qoofate: 不過 &gpmc_adr2 應該等於0x808 ? 08/01 19:22
boss0405: 啊對,我是要打&gpmc_adr1 XD 08/01 20:42