作者Qoofate (大魯閣_最強打者)
看板C_and_CPP
標題[問題] Offset
時間Mon Aug 1 15:16:35 2016
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1470035799.A.3FF.html
1F:推 boss0405: 轉型成指向pad_signals的指標後,再取值的位址,再轉型 08/01 18:16
2F:→ boss0405: 成unsigned int 08/01 18:16
3F:→ boss0405: 應該就是將PAD_CTRL_BASE對應到pad_signals的格式,在32 08/01 18:18
4F:→ boss0405: bit下,&gpmc_ad0=0x800, &gpmc_adr2=0x804依此類推 08/01 18:20
5F:→ Qoofate: 喔喔~ 大概看懂了 感謝B大 08/01 19:20
6F:→ Qoofate: 不過 &gpmc_adr2 應該等於0x808 ? 08/01 19:22
7F:推 boss0405: 啊對,我是要打&gpmc_adr1 XD 08/01 20:42