
C面向对象开发
文章平均质量分 67
以面向对象的角度去实现C代码
Trstary
每天掉一根,知识涨一截。
展开
-
八.TLV通讯协议代码实现(C面向对象开发)
部分代码是从BES中扣下来的。指令处理表做的不是很好,本来使用rodata方式,图方便没有使用上。八.TLV通讯协议代码实现1. 目录结构1. demo\main.c入口函数,没什么特别,引导执行demo而已#include "tlv_protocol_demo.h"int main(void){ tlv_protocol_main(); return 0;}2. demo\tlv_protocol_demo.cdemo入口。先看static void app.原创 2020-11-26 12:07:36 · 1044 阅读 · 2 评论 -
七.面向对象的嵌入式底层开发-UART(C面向对象开发)
内容参考于《抽象接口技术和组件开发规范及其思想》、《面向ametal框架和接口的C编程》六.面向对象的嵌入式底层开发-UARTAmetal中uart的实现资源图(这里只针对uart,如果上升到send/receive,那么涉及到更多的是总线、驱动、操作系统)1....原创 2020-10-26 16:36:46 · 1038 阅读 · 0 评论 -
六.面向对象的嵌入式底层开发-LED(C面向对象开发)
内容参考于《抽象接口技术和组件开发规范及其思想》、《面向ametal框架和接口的C编程》六.面向对象的嵌入式底层开发1. 场景1,LED开关实现,资源图2. 场景2,数据收发实现,资源图原创 2020-10-26 10:19:33 · 2844 阅读 · 1 评论 -
五.抽象接口与依赖反转(C面向对象开发)
内容参考于《抽象接口技术和组件开发规范及其思想》四.抽象接口与依赖反转基于多态可以实现“与硬件无关”的应用程序。 在 C 编程中,多态的核心解决方法是充分利用“函数指针”,抽象接口就是只包含函数指针的类, 它们非常抽象,不包含任何具体的实现,仅定义了函数的调用规则。应用不在依赖具体的实现,根据接口去编写应用。实际上之前的综合示例最后一个示例已经完全体现。1. 示例:时间示例接口与应用程序(与底层无关)itime.hstruct tm{ int tm_sec; // 秒, 0 .原创 2020-10-26 08:56:45 · 674 阅读 · 1 评论 -
四.C面向对象综合示例(C面向对象开发)
四.C面向对象综合示例1. 示例1:(缺点:继承后方法名字统一)之前实现了一个简单的栈 ,其重点完成了栈的核心逻辑(入栈和出栈),假设现在增加了需求,需要实现一个带检查功能的栈,即:在数据入栈之前,必须进行特定的检查,“检查通过”后才能压人栈中。检查方式可能多种多样,假定目前有以下几种检查方式:范围检查:必须在特定的范围之内,比如:1 ~ 9,才视为检查通过;奇偶检查:必须是奇数(或者偶数),才视为检查通过;变化检查:值必须增加(比上一次的值大),才视为检查通过。继承关系如下基本栈str原创 2020-10-26 00:36:01 · 420 阅读 · 1 评论 -
三.多态(C面向对象开发)
内容参考于《抽象接口技术和组件开发规范及其思想》三.多态所谓多态,其字面含义就是具有“多种形式”。从调用者的角度看对象,会发现它们非常相似,难以区分,但是这些被调用对象的内部处理实际上却各不相同。 换句话说,各个对象虽然内部处理不同,但对于使用者(调用者)来讲,们却是相同的。1. 示例1:一个学生类,自我介绍的不同,可以表现为多态。student.h#ifndef __STUDENT_H#define __STUDENT_Hstruct student { int(*student_.原创 2020-10-25 23:13:16 · 275 阅读 · 0 评论 -
二.继承(C面向对象开发)
内容参考于《抽象接口技术和组件开发规范及其思想》一.继承在一个系统中,可能具有多个栈, 为便于区分,每个栈可以具有不同的名称(系统栈、数据栈、符号栈……)。基于该需求,可以实现一个带名称的栈(为便于和普通栈区分,后文将其称之为“命名栈” ), 即在普通栈的基础上, 增加一个“名称” 属性。1. 示例1:(强制转换,不是最优解)#ifndef __STACK_NAMED_H#define __STACK_NAMED_H#include "stack.h" /* 包含基类头文件 */str.原创 2020-10-25 22:19:21 · 355 阅读 · 0 评论 -
一.封装(C面向对象开发)
内容参考于《抽象接口技术和组件开发规范及其思想》一.封装在C语言中,可以使用一个C文件(.c 文件)和H文件完(*.h 文件)成“类”的定义,将所有需要封装的东西都存于C 文件中,H 文件中只展现那些对外可见、无需封装(重点)的内容。1. 示例1:一个栈对象的例子。stack.h#ifndef __STACK_H#define __STACK_Hstruct stack; /* 类型声明,无需关心类定义的具体细节 */struct stack * stack_create (int .原创 2020-10-25 14:02:16 · 788 阅读 · 1 评论