博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
container_of、containof、offsetof、offsetofend
阅读量:2029 次
发布时间:2019-04-28

本文共 1212 字,大约阅读时间需要 4 分钟。

#ifndef offsetof#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)#endif#ifndef sizeof_field#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))#endif#ifndef offsetofend#define offsetofend(TYPE, MEMBER) (offsetof(TYPE, MEMBER) + sizeof_field(TYPE, MEMBER))#endif#ifndef containof #ifdef offsetof  #define containof(ptr, type, member) ((type *) ((char *)(ptr) - offsetof(type, member))) #else  #define containof(ptr, type, member) ((type *)((char *)(ptr) - (size_t)&((type *)0)->member)) #endif#endif /** * container_of - cast a member of a structure out to the containing structure * @ptr:    the pointer to the member. * @type:   the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */#ifndef container_of#define container_of(ptr, type, member) ({          \	const typeof(((type *)0)->member)*__mptr = (ptr);    \		     (type *)((char *)__mptr - offsetof(type, member)); })#endif/** * offsetofend(TYPE, MEMBER) * * @TYPE: The type of the structure * @MEMBER: The member within the structure to get the end offset of */#ifndef offsetofend#define offsetofend(TYPE, MEMBER) (offsetof(TYPE, MEMBER)	+ sizeof(((TYPE *)0)->MEMBER))#endif

 

转载地址:http://abpaf.baihongyu.com/

你可能感兴趣的文章
Windows下tensorBoard不显示问题解决办法:No dashboards are active for the current data set
查看>>
系统架构师设计培训心得之二——架构设计
查看>>
Kafka技术知识总结之一——Kafka 的元素,组成,架构
查看>>
Kafka技术知识总结之二——Kafka事务
查看>>
Kafka技术知识总结之三——Kafka 高效文件存储设计
查看>>
Kafka技术知识总结之四——Kafka 再均衡
查看>>
Kafka技术知识总结之五——Kafka的高可用性
查看>>
Kafka技术知识总结之六——Kafka负载均衡策略
查看>>
Kafka技术知识总结之七——Kafka磁盘存储
查看>>
Kafka技术知识总结之八——Kafka生产者结构
查看>>
Kafka技术知识总结之九——Kafka消息压缩与日志压缩
查看>>
Redis技术知识总结之一——Redis 的数据结构
查看>>
Redis技术知识总结之二——Redis线程模型
查看>>
Redis技术知识总结之三——Redis数据淘汰机制
查看>>
Redis技术知识总结之四——Redis内存优化
查看>>
Redis技术知识总结之五——Redis集群模式
查看>>
Redis技术知识总结之六——Redis持久化机制
查看>>
Redis技术知识总结之七——Redis多路复用机制
查看>>
Dubbo技术知识总结之一——Dubbo架构
查看>>
Dubbo技术知识总结之二——注册中心
查看>>