响水凹

欢迎来到 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.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1