响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:struct_offset

这是本文档旧的修订版!


结构体成员Offset

有一种空指针(NULL)的特殊用法,将其强制转换为某种结构体类型,然后获取该结构体某成员的地址偏移量(offset):

#define OFFSET(type, field) \
        ((size_t)&((type *)0)->field)

虽然该代码经常可以工作,但C标准并没有明确定义该行为。

其实,C标准头文件stddef.h已经定义了一个相同功能的宏offsetof,可以直接使用,而不必自己实现。

computer/c/tips/struct_offset.1409916852.txt.gz · 最后更改: 2014/11/01 02:02 (外部编辑)