编程中的offsetof

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程中的offsetof相关的知识,希望对你有一定的参考价值。

linux和windows平台都已经定义了offsetof函数,用于取struct类型中某个变量的偏移量

stddef.h头文件中,该宏的完整说明如下:
#ifdef __cplusplus
#ifdef _WIN64
#define offsetof(s,m) (size_t)( (ptrdiff_t)&reinterpret_cast<const volatile char&>((((s *)0)->m)) )
#else
#define offsetof(s,m) (size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m))
#else
#ifdef _WIN64
#define offsetof(s,m) (size_t)( (ptrdiff_t)&(((s *)0)->m) )
#else
#define offsetof(s,m) (size_t)&(((s *)0)->m)
#endif
#endif /* __cplusplus */

以上是关于编程中的offsetof的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

为 Python ctypes 中的结构实现 offsetof()

剖析linux内核中的宏-----------offsetof

linux内核中的offsetof与container_of宏

C++ 中嵌套 C 结构的 offsetof()

offsetof