关于linux里的几个宏

 
#define offsetof (TYPE, MEMBER) (( size_t ) &((TYPE *)0)->MEMBER)
#define container_of ( ptr , type , member) ({ /
              const typeof( (( type *)0)->member ) *__mptr = ( ptr ); /
              ( type *)( (char *)__mptr - offsetof ( type ,member) );})
 
typedef struct{
       int a ;
       int b ;
       int c ;
} Me_t ;
 
例如: // 得到 Me_t 的成员 b, 在结构中的位置 obj_b = 4
int obj_b = offsetof( Me_t , b);
例如 :   Me_t   me_obj ;
              Me_t* me_obj_addr = NULL;
// 得到 me_obj 对象结构的实际地址
me_obj_addr = container_of(&me_obj.b, Me_t, b); 
其中
    const  typeof( ((type *)0)->member )  *__mptr; 
在这里可以理解成
    const  int *__mptr;
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值