C语言offsetof宏的说明

转载 2012年03月21日 22:43:04

offsetof  :
    Retrieves the offset of a member from the beginning of its parent structure.

size_t offsetof(structName, memberName);

Parameters:
    structName : Name of the parent data structure.
    memberName :Name of the member in the parent data structure for which to determine the offset.

Return Value : offsetof returns the offset in bytes of the specified member from 
          the beginning of its parent data structure. It is undefined for bit fields.
Remarks :
    The offsetof macro returns the offset in bytes of memberName from the beginning of the structure specified by structName. You can specify types with the struct keyword.

Note  :
    offsetof is not a function and cannot be described using a C prototype.

 

 #define offsetof(s, m)   (size_t)&(((s *)0)->m)

s是一个结构名,它有一个名为m的成员(s和m 是宏offsetof的形参,它实际是返回结构s的成员m的偏移地址.

(s *)0 是骗编译器说有一个指向类(或结构)s的指针,其地址值0 

&((s *)0)->m   是要取得类s中成员变量m的地址. 因基址为0,这时m的地址当然就是m在s中的偏移

最后转换size_t 型,即unsigned int。

linux内核 宏offsetof 解析

1offsetof(s,m)解析 offsetof(s,m)解析  2   3今天看代码时,发现一个有用的东东,offsetof(s,m),这是一个宏,定义如下:  4  5 #define ...

C语言中offsetof宏的应用

offsetof  :    Retrieves the offset of a member from the beginning of its parent structure.size_t of...

可能错误使用了‘offsetof’宏

最近代码里引进了一个宏offsetof(s,m),原来一直在windows上开发,今天发现在linux编译的日志中出现了如下的警告: xxxx.cpp:8: 警告:对 NULL 对象非静态数据成员...

sizeof与offsetof有关的结构体详解

sizeof与offsetof在程序中经常遇到,但在面试中其应用使得许多小伙伴吃闭门羹,被面试官问得哑口无言。接下来对两者的应用做详细介绍。关于sizeof定义:sizeof乃C/C++中的一个操作符...

C语言结构体属性的偏移量计算——关于offsetof函数的详解

//计算结构体偏移量 #include #include #includestring.h> //详解:对于offscfof()函数, //(TYPE *)0这句的意思是将内存地址是0内存块转换成一...

巧妙使用offsetof宏定义,在c,c++开发中解决问题

根据一个已经分配空间的结构体指针a中的某个成员b的地址,来获取该结构体指针地址...

offsetof宏解析

offsetof宏解析 今天看代码时,发现一个有用的东东,offsetof(s,m),这是一个宏,MSDN文档的说明如下: Retrieves the offset of a memb...
  • xdonx
  • xdonx
  • 2013年07月22日 10:51
  • 1013

C语言中offsetof(TYPE,MEMBER)宏的解释

offsetof(TYPE, MEMBER) 该宏在Linux内核代码中定义如下: #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)-...

如何通过offsetof 动态的给结构体或者类成员变量赋值

结构体 typedef struct { char a; char b; int  abc; }stTest; 代码如下: int m = offsetof(stTest, abc)...
  • zhubosa
  • zhubosa
  • 2016年07月21日 17:22
  • 401

C 语言中的 offsetof 意义及理解 使用例子

offsetoff(struct_t,member)宏的作用就是获得成员member在类型struct_t中的偏移量。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言offsetof宏的说明
举报原因:
原因补充:

(最多只允许输入30个字)