读书人

前一阵子百度来校园招聘时的一道笔试题

发布时间: 2012-02-06 15:52:44 作者: rapoo

前一阵子百度来校园招聘时的一道笔试题
#define offset(TYPE,MEMBER) (size_t & ((TYPE*)0))-> MEMBER
问这个宏是什么意思?



[解决办法]
应该是这样就好理解了:(size_t) & ((TYPE*)0)-> MEMBER
随后就像楼上的几位兄弟说的,通过偏移取成员再取地址,得其偏移。
当然也可以把0改成任意的数。只不过要将偏移的结果减去这个数。
[解决办法]
#define offset(TYPE,MEMBER) (size_t)(&((TYPE*)0)-> MEMBER)
写成这样要好点
那个不是与,失去地址,然后强制转换为 size_t 类型

读书人网 >C语言

热点推荐