offsetof的实现

embedded/2024/11/22 14:38:23/

大家好,今天给大家分享一下offsetof宏是如何实现的,那么话不多说我们直接开始。

我们要实现这个宏,我们必须先了解这个宏的作用,它是用来求结构体成员变量的偏移量。

我们先来看看它在cplusplus网站中的介绍吧

f8a781756bc84b5996e89b081b21b82b.jpg

 那么根据这个网站的介绍,我们来看看它是如何使用的:

4ebecf2e7b184c52aaaa3fa8881064d5.png

输出结果是:

54f0d1f5dacf4098b2be8895f711dce6.png 

看到这里,我们的基本思路是假定0为首地址,这样取出其成员变量的地址便是偏移量。

注意:我们将0强制类型转换为结构体变量,那么这个结构体成员的偏移量就是0加它本身。所以结构体指针0就代表着这个结构体成员要从0这个起始地址计算它的地址这样便可以直接用地址来代替偏移量。

那么下面我们来实现这个宏

6a0a4cc62346440c9c7cd355671ed587.png

最后结果也是与offsetof一样

 1930df77bd81489bace1a058346963ff.png

那么今天分享就到这里,谢谢大家!!!

3aacdc6dc8ae45cdaa2cbc5e8701d8ad.png 


http://www.ppmy.cn/embedded/139640.html

相关文章

【Qt】QComboBox设置默认显示为空

需求 使用QComboBox,遇到一个小需求是,想要设置未点击出下拉列表时,内容显示为空。并且不想在下拉列表中添加一个空条目。 实现 使用setPlaceholderText()接口。我们先来看下帮助文档: 这里说的是,placeholderText是…

Day03_AJAX原理 (黑马笔记)

Day03_AJAX原理 目录 Day03_AJAX原理 学习目标 01.XMLHttpRequest - 基础使用 目标 讲解 小结 02.XMLHttpRequest - 查询参数 目标 讲解 小结 03.案例 - 地区查询 目标 讲解 小结 04.XMLHttpRequest - 数据提交 目标 讲解 小结 05.认识_Promise 目标 讲解…

整理:4篇专注于多模态大语言模型(MLLM)的瘦身变体论文

近年来,随着人工智能技术飞速发展,大语言模型(LLM)和多模态大语言模型(MLLM)成为了炙手可热的明星。它们不仅能处理文字,还能看图识字,简直是“全能选手”。这种能力得益于模型中加入…

2024年11月22日 十二生肖 今日运势

小运播报:2024年11月22日,星期五,农历十月廿二 (甲辰年乙亥月庚寅日),法定工作日。 红榜生肖:马、猪、狗 需要注意:牛、蛇、猴 喜神方位:西北方 财神方位&#xff1a…

Redis设计与实现第10章 -- RDB持久化 总结 (创建、载入、自动保存、文件结构)

Redis是内存数据库,数据库状态存储在内存里,如果服务器进程退出,服务器的数据库状态没有保存到磁盘里,就会丢失。为了解决这个问题,Redis提供了RDB持久化功能,可以把Redis在内存里的数据库状态保存在磁盘里…

Android 13 编译Android Studio版本的Launcher3

Android 13 Aosp源码 源码版本 Android Studio版本 Launcher3QuickStepLib (主要代码) Launcher3ResLib(主要资源) Launcher3IconLoaderLib(图片加载,冲突资源单独新建) 需要值得注意的是: SystemUISharedLib.jar 有kotlin和java下的,在 Lau…

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…

实验室资源调度系统:基于Spring Boot的创新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…