C语言 - 继承
我们知道C 的三大特性就是封装、继承、多态同时这也是面向对象的重要特性在这些特性的基础上我们在结合一些设计模式这样我们的项目就变得高内聚低耦合同时也增强了代码的安全性可读性可维护性。我们在学习Linux内核代码的时候就会发现其实里面已经广泛利用C语言实现了这些特性下面我们一起来学习一下怎么用C语言来实现这些面向对象的特性。这一章我们先来聊聊继承我们通过LED来举例我们分别有3个LEDGPIO灯、PWM灯、I2C灯三个Struct抽出来我们发现会有很多是相似的如图我们发现其中name、state是一模一样的如果我们加入第四种改一次name的逻辑三个都要改但凡是改漏一个就出现了bug怎么办这时候我们把相同的部分抽出来生成一个LedBase然后放进其他3个struct如下图Struct里面放另一个Struct就有点类似俄罗斯套娃外层包着内层有细心的小伙伴就发现了一个细节公共部分都是放在了第一个位置我们先来看看这样抽出来套娃后在内存地址中是咋样的如图所以套娃后就是内存数据在前外层数据紧跟其后连续排列经过我们上面的改造后初始化也不用重复了先初始化公众的再初始化模块的如图不只是数据函数也是能共享的例如我们要获取当前是哪个模块再使用那么写了一个const char *get_led_name(LedBase *me) {return me-name;}我们通过如下调用get_led_name(gpio_led.base);get_led_name(pwm_led.base);get_led_name(i2c_led.base);在3个LED模块中调用这个get_led_name就会返回不同的名称 这样三个LED都使用了同一个函数写一次3种led都能用只要传base的地址过去函数其实不需要知道你是哪一种led。在实践中我们会发现继承不只是数据共享行为也能共享所以继承本质并不是为了少些代码而是为了少改代码只是在我们平时的使用过程中也要注意在设计使用C的继承时我们要把基础数据放在继承结构的首位这样不管是数据强转、数据访问都不会有什么问题。

相关新闻

Uvicorn内存优化:Python对象生命周期管理与异步Web开发实践

Uvicorn内存优化:Python对象生命周期管理与异步Web开发实践

1. 项目概述:为什么Uvicorn内存优化是Web开发者的必修课如果你正在用FastAPI、Starlette或者任何基于ASGI的Python框架开发Web服务,那么Uvicorn这个名字你一定不陌生。作为ASGI服务器的事实标准,Uvicorn以其轻量和高效著称,承载着…

2026/7/27 9:56:24阅读更多 →
C++ vector迭代器使用详解:从基础遍历到元素修改实战

C++ vector迭代器使用详解:从基础遍历到元素修改实战

1. 项目概述与核心需求解析 看到这个标题“C //练习 3.23 编写一段程序,创建一个含有10个整数的vector对象,然后使用迭代器将所有元素的值都变成原来的两倍。输出vector对象的内容,检验程序是否正确。”,这显然是一个经典的C入门练…

2026/7/27 9:56:24阅读更多 →
5个实用技巧:用OpenSpeedy让你的游戏体验更流畅

5个实用技巧:用OpenSpeedy让你的游戏体验更流畅

5个实用技巧:用OpenSpeedy让你的游戏体验更流畅 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy OpenSpeedy是一款完全免费的开源游戏变速工具,专为Win…

2026/7/27 9:56:24阅读更多 →
告别手酸!阴阳师自动化脚本的3种智能模式解放你的双手

告别手酸!阴阳师自动化脚本的3种智能模式解放你的双手

告别手酸!阴阳师自动化脚本的3种智能模式解放你的双手 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 你是否厌倦了在阴阳师百鬼夜行中重复点击屏幕,手指…

2026/7/27 11:34:33阅读更多 →
智能体架构解析与开发实践指南

智能体架构解析与开发实践指南

1. 智能体基础概念解析 第一次接触"智能体"这个概念时,我也曾困惑不已。记得2016年在实验室调试第一个对话系统时,导师突然问我:"你觉得这算是个智能体吗?"当时我只能尴尬地摇头。如今八年过去,经…

2026/7/27 11:34:33阅读更多 →
MySQL数据库入门到实战:从安装配置到SQL优化与运维管理

MySQL数据库入门到实战:从安装配置到SQL优化与运维管理

在实际数据库开发和管理工作中,MySQL 作为最流行的开源关系型数据库之一,其重要性不言而喻。无论是构建一个简单的个人博客,还是支撑一个高并发的电商平台,扎实的 MySQL 基础都是后端工程师、数据分析师乃至运维人员的必备技能。然…

2026/7/27 11:34:33阅读更多 →
MoneyPrinterTurbo终极指南:如何用AI大模型3分钟生成爆款短视频

MoneyPrinterTurbo终极指南:如何用AI大模型3分钟生成爆款短视频

MoneyPrinterTurbo终极指南:如何用AI大模型3分钟生成爆款短视频 【免费下载链接】MoneyPrinterTurbo 利用 AI 大模型和自动化工作流,根据主题或关键词一键生成高清短视频。Generate HD short videos from a topic or keyword with an automated AI workf…

2026/7/27 11:34:33阅读更多 →
脑机接口意念控制技术解析:从信号采集到轮椅控制全流程

脑机接口意念控制技术解析:从信号采集到轮椅控制全流程

脑机接口技术正逐步从实验室走向现实应用,近期 Neuralink 首位人类受试者通过意念控制轮椅的案例引发了广泛关注。这背后不仅是单个设备的突破,更涉及信号采集、解码算法、实时控制和人机协同等多个技术领域的交叉融合。对于从事嵌入式开发、算法工程或人…

2026/7/27 11:34:33阅读更多 →
Sequence解谜游戏:空间逻辑与数字推理的完美结合

Sequence解谜游戏:空间逻辑与数字推理的完美结合

每天打开手机,你是不是也厌倦了千篇一律的数字游戏?数独、2048、Wordle...这些经典玩法虽然有趣,但总觉得缺少点什么。直到我发现了Sequence——这款将空间逻辑与数字推理完美结合的新型每日解谜游戏,它真正让我重新找回了破解谜题…

2026/7/27 11:32:32阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →