[问题] Offset

楼主: Qoofate (大鲁阁_最强打者)   2016-08-01 15:16:35
开发平台(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为单位
小弟看不是很懂..
请大大赐教
作者: boss0405 (boss)   2016-08-01 18:16:00
转型成指向pad_signals的指标后,再取值的位址,再转型成unsigned int应该就是将PAD_CTRL_BASE对应到pad_signals的格式,在32bit下,&gpmc_ad0=0x800, &gpmc_adr2=0x804依此类推
楼主: Qoofate (大鲁阁_最强打者)   2016-08-01 19:20:00
喔喔~ 大概看懂了 感谢B大不过 &gpmc_adr2 应该等于0x808 ?
作者: boss0405 (boss)   2016-08-01 20:42:00
啊对,我是要打&gpmc_adr1 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com