自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

转载 Boadload和Image$$??$$Limit含义

添加链接描述

2021-01-22 14:12:05 238

原创 八.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 961 2

原创 一.UML概述(UML图)

内容参考于《UML2基础、建模与设计实战》都是使用visio绘制的插图一. UML概述1. UML的组成:事物、关系、图1.1 事物:构建事物、行为事物、分组事务、注释事物下面内容不重要构建事物:就是类、接口、用例、构建啊这种,图中一块块的;行为事物:消息的交互、状态的变化这些;分组事物:比如一个UML当作一包,在另一个MUL当构建事物用;注释事物:就是uml的注释。1.2 关系:依赖、关联、泛化(继承)、实现依赖:显示器是笔记本的一个成员,所以笔记本依赖显示器。关联:.

2020-10-27 16:22:46 247

原创 七.面向对象的嵌入式底层开发-UART(C面向对象开发)

内容参考于《抽象接口技术和组件开发规范及其思想》、《面向ametal框架和接口的C编程》六.面向对象的嵌入式底层开发-UARTAmetal中uart的实现资源图(这里只针对uart,如果上升到send/receive,那么涉及到更多的是总线、驱动、操作系统)1....

2020-10-26 16:36:46 936

原创 六.面向对象的嵌入式底层开发-LED(C面向对象开发)

内容参考于《抽象接口技术和组件开发规范及其思想》、《面向ametal框架和接口的C编程》六.面向对象的嵌入式底层开发1. 场景1,LED开关实现,资源图2. 场景2,数据收发实现,资源图

2020-10-26 10:19:33 2353 1

原创 五.抽象接口与依赖反转(C面向对象开发)

内容参考于《抽象接口技术和组件开发规范及其思想》四.抽象接口与依赖反转基于多态可以实现“与硬件无关”的应用程序。 在 C 编程中,多态的核心解决方法是充分利用“函数指针”,抽象接口就是只包含函数指针的类, 它们非常抽象,不包含任何具体的实现,仅定义了函数的调用规则。应用不在依赖具体的实现,根据接口去编写应用。实际上之前的综合示例最后一个示例已经完全体现。1. 示例:时间示例接口与应用程序(与底层无关)itime.hstruct tm{ int tm_sec; // 秒, 0 .

2020-10-26 08:56:45 592 1

原创 四.C面向对象综合示例(C面向对象开发)

四.C面向对象综合示例1. 示例1:(缺点:继承后方法名字统一)之前实现了一个简单的栈 ,其重点完成了栈的核心逻辑(入栈和出栈),假设现在增加了需求,需要实现一个带检查功能的栈,即:在数据入栈之前,必须进行特定的检查,“检查通过”后才能压人栈中。检查方式可能多种多样,假定目前有以下几种检查方式:范围检查:必须在特定的范围之内,比如:1 ~ 9,才视为检查通过;奇偶检查:必须是奇数(或者偶数),才视为检查通过;变化检查:值必须增加(比上一次的值大),才视为检查通过。继承关系如下基本栈str

2020-10-26 00:36:01 366 1

原创 三.多态(C面向对象开发)

内容参考于《抽象接口技术和组件开发规范及其思想》三.多态所谓多态,其字面含义就是具有“多种形式”。从调用者的角度看对象,会发现它们非常相似,难以区分,但是这些被调用对象的内部处理实际上却各不相同。 换句话说,各个对象虽然内部处理不同,但对于使用者(调用者)来讲,们却是相同的。1. 示例1:一个学生类,自我介绍的不同,可以表现为多态。student.h#ifndef __STUDENT_H#define __STUDENT_Hstruct student { int(*student_.

2020-10-25 23:13:16 249

原创 二.继承(C面向对象开发)

内容参考于《抽象接口技术和组件开发规范及其思想》一.继承在一个系统中,可能具有多个栈, 为便于区分,每个栈可以具有不同的名称(系统栈、数据栈、符号栈……)。基于该需求,可以实现一个带名称的栈(为便于和普通栈区分,后文将其称之为“命名栈” ), 即在普通栈的基础上, 增加一个“名称” 属性。1. 示例1:(强制转换,不是最优解)#ifndef __STACK_NAMED_H#define __STACK_NAMED_H#include "stack.h" /* 包含基类头文件 */str.

2020-10-25 22:19:21 322

原创 一.封装(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 707 1

转载 五.飞机大战

转载链接 1 项目简介 飞机大战是我们大家所熟知的一款小游戏,本教程就是教大家如何制作一款自己的飞机大战 首先我们看一下效果图 玩家控制一架小飞机,然后自动发射子弹,如果子弹打到了飞下来的敌机,则射杀敌机,并且有爆炸的特效 接下来再说明一下案例的需求,也就是我们需要实现的内容 滚动的背景地图飞机的制作和控制子弹的制作和射击敌机的制作碰撞检测爆炸效果音效添加2 创建项目 创建项目步骤如下: 打开Qt跟着向导创建项目基类选择 QWidget空窗.

2020-09-22 14:26:02 690

原创 四.飞机大战(C++实战:QT代码解读)

目的:使用c++,不是为了深入学习c++也不是为了学习QT,不是不深入学习,而是对于目前有没有帮助和使用得上。QT案例:飞机大战四.飞机大战前期准备1. 总结从C的角度去学习了C++的特别点,通过QT的基本学习,知道了怎么使用C++去写代码,头文件和源文件该写哪些内容。接下来使用QT制作飞机大战来实战C++,完成后,C++的篇幅就结束了。以后如果有机会,会深入地去学习C++和QT,当然在C编译的底层原理中很多都是和C++相关的。2. 飞机大战代码和素材下载...

2020-09-22 12:11:03 818

原创 三.多窗口切换和对话框(C++实战:QT代码解读)

内容参考于《Qt Creator快速入门》(第三版)目的:使用c++,不是为了深入学习c++也不是为了学习QT三.多窗口切换和对话框1. 窗口切换示例目录mydialog.uimydialog.h#ifndef MYDIALOG_H#define MYDIALOG_H#include <QDialog>namespace Ui {class MyDialog;}class MyDialog : public QDialog{ Q_OBJECT.

2020-09-22 11:07:21 1051

原创 二.信号-槽(C++实战:QT代码解读)

内容参考于《Qt Creator快速入门》(第三版)目的:使用c++,不是为了深入学习c++也不是为了学习QT二.信号-槽1. 基本示例信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时.

2020-09-22 10:03:35 267

原创 一.Helloworld(C++实战:QT代码解读)

内容参考于《Qt Creator快速入门》(第三版)目的:使用c++,不是为了深入学习c++也不是为了学习QT一.Helloworld1. 基本示例(像C语言的暴力写法)目录结构helloworld2.pro# 如果QT_MAJOR_VERSION版本低于4,那么添加widgets模块greaterThan(QT_MAJOR_VERSION, 4):QT += widgets# 源文件SOURCES += \ main.cppmain.cpp#include &lt.

2020-09-21 17:57:19 1012

原创 十五.模板(动态类型)(C++)

内容参考于《21天学通C++》(第八版)十五.模板1. 普通模板示例#include<iostream>#include<string>using namespace std;template < typename Type>const Type& GetMax(const Type& value1, const Type& value2){ if (value1 > value2) return value1; .

2020-09-21 14:37:48 386

原创 十四.C++的类型转换(C++)

内容参考于《21天学通C++》(第八版)十四.C++的类型转换由于不喜欢C风格类型转换,所以多了一套方案1. static_cast编译阶段检查并转换Base* objBase = new Derived ();Derived* objDer = static_cast<Derived*>(objBase); // ok!// class Unrelated is not related to BaseUnrelated* notRelated = static_cast&l.

2020-09-21 14:37:33 138

原创 十三.双目运算符重载(C++)

内容参考于《21天学通C++》(第八版)十三.双目运算符重载以类成员的方式实现的双目运算符只接受一个参数, 其原因是第二个参数通常是从类属性获得的。1. 示例#include <iostream>using namespace std;class Date{private: int day, month, year; string dateInString;public: Date(int inMonth, int inDay, int inYear) : mo.

2020-09-21 14:37:23 404

原创 十二.单目运算符重载(C++)

内容参考于《21天学通C++》(第八版)十二.单目运算符重载1. 示例#include <iostream>using namespace std;class Date{private: int day, month, year;public: Date(int inMonth, int inDay, int inYear) : month(inMonth), day(inDay), year(inYear) {}; Date & operator ++.

2020-09-21 14:36:57 828

原创 十一. 封装的public与private与protected 、友元、继承的public与private与protected(C++)

内容参考于《21天学通C++》(第八版)十一. 封装的public与protected与private 、友元、继承的public与protected与private1. public与protected与privateC++让您能够将类属性和方法声明为公有的,这意味着有了对象后就可获取它们;也可将其声明为私有的, 这意味着只能在类的内部(或其友元)中访问。 作为类的设计者, 您可使用 C++关键字 public和 private 来指定哪些部分可从外部(如 main( ))访问,哪些部分不能。.

2020-09-21 14:36:45 303

原创 十.override和final的使用和继承的注意事项(C++)

内容参考于《21天学通C++》(第八版)十.override和final的使用表明覆盖意图的限定符 override使用 final 来禁止覆盖函数1. 一个复杂的示例#include <iostream>using namespace std;class Fish{public: virtual Fish* Clone() = 0; virtual void Swim() = 0; virtual ~Fish() {};};class Tuna : pub.

2020-09-18 13:46:34 141

原创 九.继承的菱形问题(C++)

内容参考于《21天学通C++》(第八版)九.继承的菱形问题鸭嘴兽具备哺乳动物、鸟类和爬行动物的特征,这意味着 Platypus 类需要继承Mammal、 Bird 和 Reptile。然而,这些类都从同一个类—Animal 派生而来。实例化 Platypus 时,结果将如何呢?对于每个 Platypus 实例,将实例化多少个 Animal 实例呢?1. 示例-异常现象#include <iostream>using namespace std;class Animal{.

2020-09-18 13:46:06 118

原创 八.抽象基类和纯虚函数(C++)

内容参考于《21天学通C++》(第八版)八.抽象基类和纯虚函数不能实例化的基类被称为抽象基类, 这样的基类只有一个用途, 那就是从它派生出其他类。 在 C++中,要创建抽象基类,可声明纯虚函数。1. 示例#include <iostream>using namespace std;class Fish{public: // define a pure virtual function Swim virtual void Swim() = 0;};class Tuna.

2020-09-18 13:45:40 128

原创 七.多态-虚函数表(C++)

内容参考于《21天学通C++》(第八版)七.多态-虚函数表1. 示例

2020-09-18 13:45:22 115

原创 六.多态(C++)

内容参考于《21天学通C++》(第八版)六.多态1. 示例1#include <iostream>using namespace std;class Fish{public: void Swim() { cout << "Fish swims! " << endl; }};class Tuna :public Fish{public: // override Fish::Swim void Swim() { cout &lt.

2020-09-18 13:44:57 139

原创 五.继承(C++)

内容参考于《21天学通C++》(第八版)二.继承1. 示例#include <iostream>using namespace std;class Fish{public: bool isFreshWaterFish; void Swim() { if (isFreshWaterFish) cout << "Swims in lake" << endl; else cout << "Swims in sea" &l.

2020-09-18 13:44:36 117

原创 四.sizeof用于类(C++)

内容参考于《21天学通C++》(第八版)四.sizeof用于类1. 示例-只算成员变量大小,不算方法#include <iostream>#include <string.h>using namespace std;class MyString{private: char* buffer;public: MyString(const char* initString) // default constructor { buffer = NULL; .

2020-09-18 13:44:15 314

原创 三.类的复制(C++)

内容参考于《21天学通C++》(第八版)三.类的复制1. 示例1-浅复制及其存在的问题#include <iostream>#include <string.h>using namespace std;class MyString{private: char* buffer;public: MyString(const char* initString) // Constructor { buffer = NULL; if (initString .

2020-09-18 13:43:41 2576

原创 二.析构函数(C++)

内容参考于《21天学通C++》(第八版)二.析构函数1. 示例1#include <iostream>#include <string.h>using namespace std;class MyString{private: char* buffer;public: MyString(const char* initString) // constructor { if (initString != NULL) { buffer = ne.

2020-09-18 13:42:57 169

原创 十.带默认值的函数参数(从C到C++)

内容参考于《21天学通C++》(第八版)十.带默认值的函数参数1. 示例1()#include <iostream>using namespace std;// Function Declarations (Prototypes)double Area(double radius, double pi = 3.14){ return pi * radius * radius;}int main(){ cout << "Enter radius: ";.

2020-09-18 13:38:47 136

原创 一.构造函数(C++)

内容参考于《21天学通C++》(第八版)一.构造函数1. 示例1:构造函数是可以重载#include <iostream>#include <string>using namespace std;class Human{private: string name; int age;public: Human() // default constructor { age = 0; // initialized to ensure no junk val.

2020-09-17 15:25:34 110

原创 九.动态内存分配(从C到C++)

内容参考于《21天学通C++》(第八版)九.动态内存分配1. 示例1#include <iostream>using namespace std;int main(){ // Request for memory space for an int int* pointsToAnAge = new int; // Use the allocated memory to store a number cout << "Enter your dog’ s age:.

2020-09-17 14:49:32 102

原创 七.引用(从C到C++)

内容参考于《21天学通C++》(第八版)七.引用(从C到C++)1. 示例1#include <iostream>using namespace std;int main(){ int original = 30; cout << "original = " << original << endl; cout << "original is at address: " << hex << &or.

2020-09-17 14:40:03 102

原创 八.lambda函数(匿名函数)(从C到C++)

内容参考于《21天学通C++》(第八版)七.lambda函数(匿名函数)1. 示例#include <iostream>#include <vector>using namespace std;void ForEach(const std::vector<int> &values, void(*func)(int)){ for (int value : values) func(value);}int main(int argc,.

2020-09-17 14:21:10 107

原创 六.函数重载(从C到C++)

内容参考于《21天学通C++》(第八版)五.函数重载1. 示例#include <iostream>using namespace std;const double Pi = 3.14159265;double Area(double radius); // for circledouble Area(double radius, double height); // for cylinderint main(){ cout << "Enter z fo.

2020-09-17 14:03:37 99

原创 五.C++字符串std::string(从C到C++)

内容参考于《21天学通C++》(第八版)五.C++字符串std::string1. 示例#include <iostream>#include <string>using namespace std;int main(){ // 创建有初始值的字符串 string greetString("Hello std::string!"); cout << greetString << endl; // 创建空字符串,并获取值 cout.

2020-09-17 12:00:26 166

原创 四.动态数组(从C到C++)

内容参考于《21天学通C++》(第八版)四.动态数组1. 示例#include <iostream>#include <vector>using namespace std;int main(){ vector<int> dynArray(3); // dynamic array of int dynArray[0] = 365; dynArray[1] = -421; dynArray[2] = 789; cout << .

2020-09-17 11:50:47 91

原创 三.constexpr关键字(从C到C++)

内容参考于《21天学通C++》(第八版)三.constexpr关键字1. 示例#include <iostream>constexpr double GetPi() { return 22.0 / 7; }constexpr double TwicePi() { return 2 * GetPi(); }int main(){ using namespace std; const double pi = 22.0 / 7; cout << "constan.

2020-09-17 11:11:33 107

原创 二.auto关键字(从C到C++)

内容参考于《21天学通C++》(第八版)二.auto关键字1. 示例#include <iostream>using namespace std;int main(){ auto coinFlippedHeads = true; auto largeNumber = 2500000000000; cout << "coinFlippedHeads = " << coinFlippedHeads; cout << " , sizeof.

2020-09-17 10:52:54 135

原创 一.命名空间(从C到C++)

内容参考于《21天学通C++》(第八版)一.命名空间1.先查看第一个C++代码1: // Preprocessor directive that includes header iostream2: #include <iostream>3:4: // Start of your program: function block main()5: int main()6: {7: /* Write to the screen */8: std::cout .

2020-09-17 09:37:52 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除