- 论坛徽章:
- 0
|
原帖由 flw 于 2006-6-27 11:20 发表
什么叫 offset_of 啊?
打错了,没有那个下划线。
linux内核的list_entry及相关宏是这样的:
- #define list_entry(ptr, type, member) \
- container_of(ptr, type, member)
- #define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
- #define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
- #define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
复制代码
说到底, 最重要的还是gcc允许程序员使用__builtin_offsetof来探测struct中某个域的偏移是多少, 不然这个代码就很难写了。![](static/image/smiley/default/icon_biggrin.gif) |
|