自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 问答 (1)
  • 收藏
  • 关注

原创 红黑树做中文字符输入法

红黑树做中文字符输入法

2023-07-08 12:15:51 1333

原创 利用结构体偏移量的高级C应用

利用结构体偏移量的高级C应用

2023-02-23 16:02:25 131

原创 双向链表处理不定长数据的问题

双向链表处理不定长数据的问题应用方面双向链表逻辑处理示意图数据结构设置初始化双向链表双向链表节点内存的申请和释放初始化双向链表数据移除节点,但不释放内存数据在头部/末尾添加向下/上移动操作的双向链表逻辑完整代码总结应用方面在所有的嵌入式设备中,内存有限成了硬件的一个鸡肋,所以, 减少内存的使用 在嵌入式程序中尤为重要。而双向链表就是一种好的选择。双向链表逻辑处理示意图数据结构设置typedef struct doubly_linked_list_s doubly_linked_list_t;

2021-09-01 10:59:16 183

原创 Linux下快速获取文件名的编程方法

Linux下快速获取文件名的编程方法1. 通过Linux 命令行的方法进行过滤,并重定向到一个临时文件中,之后通过编程读取每一行的内容即可;2. 通过 scandir 函数进行处理,使用的是快速排序的方法。1. candir的函数定义#include <dirent.h>int scandir( const char *dirp, struct dirent ***...

2019-11-26 23:19:04 1638

原创 最全面的结构体和联合体共用实例

结构体和联合体占用的内存:结构体:结构体占用的内存大小,首先和编译器的系统位数有关系,类似于CPU是 64 bits 还是 32 bits 的情形;其次,结构体需要考虑字节对齐的问题。实际上占用的内存大小, 在 Linux 中可以 使用 sizeof 进行获取,默认为字节对齐的大小。联合体联合体的参数共享同一个内存地址,所占的内存大小完全是由联合体中参数类型决定字长,然后数据共享,内存共享...

2019-11-25 23:12:46 4262

原创 shell与c语言完美结合,解析 df -h 命令中的 /dev/sd* 外设设备使用情况

也就是说,使用 popen 执行的shell命令,返回的是一个 FILE* 的文件操作指针,也需要使用 pclose 关闭,而不是使用 fclose 关闭。在测试中,上述三个函数,无论使用任意一个,都是可以的,但在实际应用中,仍然需要根据实际进行选择,读者自行查询资料。在第二步中我们已经获取到相应的设备信息,现在我们需要在 c语言上进行读取,实际上我们把第二步的 shell 命令。但以上的信息,我们只是需要设备名称,大小,已用空间和可用空间的信息,其他信息可以省略,因此使用awk命令输出。

2023-03-15 12:37:36 832

原创 结构体的不定长数组,用起来就是这么爽

结构体的不定长数组,用起来就是爽

2023-02-15 15:15:03 3212

原创 Linux使用mmap读取内容,完虐read操作

Linux使用mmap读取内容,完虐read操作

2023-02-10 10:22:40 434

原创 Linux的宏函数带返回值和不带返回值的不同写法,你学会了吗?

Linux的宏函数带返回值和不带返回值的写法,你学会了吗?

2022-04-12 11:05:12 456

原创 #define和typedef命名的差异

#define和typedef命名的差异

2021-12-14 09:59:01 612

原创 位操作的高级做法

位操作一、获取位二、清除位三、设置位四、测试测试代码测试结果一、获取位/** 16进制值: 0x11111111 * 二进制值: 0001 0001 0001 0001 0001 0001 0001 0001*/#define GetBit(val, bit) ((val>>bit) & 0x1)二、清除位/** 16进制值: 0x11111111 * 二进制值: 0001 0001 0001 0001 0001 0001 0001 0001*/#d

2021-12-06 14:26:33 197

原创 单链表的简单运用

单链表单链表的简单操作代码结构一、单链表数据结构二、创建节点三、删除节点四、插入节点五、打印节点六、main函数七、运行结果总结单链表的简单操作代码结构一、单链表数据结构typedef struct tag_SingleNodeLink SingleNodeLink;struct tag_SingleNodeLink{ int data; SingleNodeLink* next;};二、创建节点SingleNodeLink *CreateNode(int data){ si

2021-11-27 10:47:12 509

原创 Linux字符设备驱动(入门)

Linux字符设备驱动(入门)字符驱动模块程序创建编译字符驱动模块Makefile编译字符驱动模块程序加载驱动模块设置驱动模块的主从设备号测试程序更多内容字符驱动模块程序#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/cdev.h> static struct cdev chr_dev;static dev_t ndev

2020-11-26 18:37:25 181 1

原创 移植Linux进程追踪利器:strace

移植Linux进程追踪利器:strace源码下载创建编译输出目录创建编译源文件目录解压源码编译源码进入源文件目录执行以下命令移植 strace 到 arm 开发板strace的使用源码下载#直接从strace的官网上下载最新的源代码,当前官网为 5.9 的版本https://strace.io/files/5.9/strace-5.9.tar.xz 创建编译输出目录mkdir -p /usr/strace_arm # -p 表示如果顺序创建目录的意思

2020-11-25 09:05:45 310

原创 数据库sqlite3的交叉编译

数据库sqlite3的交叉编译创建编译输出目录解压 sqlite-autoconf-3081002.tar.gz 文件到当前目录编译源码减少编译产生动态库大小复制到arm板子上测试程序生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入创建编译输出目录mkdir -p /usr/sqlite3解压 sqlite-autoco

2020-11-24 17:14:25 287

原创 队列算法的讲解

@TOC队列的定义@TOC队列示意图@TOC队列代码队列算法的讲解队列算法目前还是使用得比较多的一种数据结构,比如Linux的内核监测cpu性能,一些大型的项目需要对数据进行先后采集的,等等,都基本上使用队列比较方便,今天讨论的是队列的一般性数组性质的用法。队列的定义队列是一种数据结构,特点是“先进先出(FIFO)”,就类似于我们排队一样,所以队列在同步数据中还是有一定的优势的,因为必...

2019-12-22 17:27:43 550

原创 Linux的回调函数的初步使用

回调函数的初步使用回调函数的作用简单的回调函数代码显示运行结果结果分析结论回调函数的作用使用回调函数主要解决:不同的函数名,但是输入的参数类型和个数相同,而进行不同的处理,从而使得文件的耦合性降低,对后续程序的维护有很重大的作用。当然,解耦不一定要使用回调函数来进行处理,因为回调函数也具有一定的局限性,比如参数的个数,函数的类型等都必须一致等。简单的回调函数代码显示#include &lt...

2019-11-21 22:42:22 905

原创 linux下增加swap的大小

使用dd命令来进行swap大小的扩容**1. 使用以下命令查看当前的swap大小是多少free -m输出的结果已兆(MB)为单位**2. 使用dd命令创建一个分区,如下命令:dd if=/dev/zero of=/home/swap bs=1024 count=1048576其中:if 表示input file,表示输入的文件,这里的输入文件为/dev/zero,也就是说扩......

2019-03-15 14:25:18 10238

原创 shell中快速替换文件中的字符串时添加换行符和制表符号

首先常见一个txt格式的文件,里面有一下内容CLANG_CONFIG_x86_LINUX_HOST_EXTRA_ASFLAGS := \ --gcc-toolchain=$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG) \ --sysroot=$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_C...

2019-03-14 11:04:33 4374

原创 论c语言的static的使用

static 在C语言中表示静态、本地的意思,外部函数不能调用static修饰的函数或者变量,因此起到了隐藏保护的本文件的作用,相当于在C++中的private类作用。1. 定义     static定义的变量必须要初始化的,不允许将一个变量的值赋给static修饰的变量    例如:static int a = 0;  (√)    但是int b = 3;stati

2016-12-02 13:26:56 354

原创 Linux C语言中的read write lseek的使用

命题:将一个文件中的内容复制到另一个文件中进行保存首先分析命题可以知道,复制的操作,使用到的是Linux中的read,write,lseek等操作,因此本文章着重使用这三个函数进行文件的复制作者在这里顺便使用了Makefile,shell脚本来帮助快速编译,为了让读者看到更加清晰的Makefile含义,本文使用最笨的方法来进行编写。从上面可以看到作者设置了5个文件,其中test

2016-11-02 22:35:53 9308

原创 QLayout的排版和使用

在Qt嵌入式中,QLayout类的使用是比较广的,以为如果使用了窗口的ui进行框架的设置,那就必然产生了很多不必要的代码量,对程序进行优化和启动就相对来说就比较慢。但是,直接使用ui的框架设置能够很好地直观地显示当前ui的美观性等,更加简单和快捷。但是,在嵌入式中,一些比较简单的ui界面,强烈建议是使用程序来进行描画和排版。本文讨论的就是这样的条件下,设置的ui界面。QLayout派生了两个子

2016-10-25 14:52:26 8661 1

原创 Qt时钟绘制

很多学Qt的伙伴都知道,学习Qt不会不知道QPainter这个函数类是拿来画图的,因此今天就画一个时钟图步骤:1.设计无窗口无边框时钟界面2.设计时钟的显示区域3.QPainter,Qtimer,QMouseEvent等类的使用1.设计无窗口无边框时钟界面这里使用重写鼠标事件的函数,不懂的可以参考我之前写的鼠标事件怎么去做(http://blog.csdn.net/

2016-10-25 11:30:25 3906 1

原创 如何在QT中的按键类中输入一下特殊的字符

如何在Qt中的按键类中输入一些特殊的字符,譬如“&”,“\”等,下面就这个问题进行输入讨论:在Qt的按键中输入&一般输不会显示的,这和一些C语言的用法是相似的,因为输出如果是一些转义字符的话, 相对而言就必须进行格式上的转变。在Qt中使用到的转义字符也是符合C语言的显示转义字符的规则的,因此下面就显示&和\进行说明。按键中显示&的话,必须输入 两个&才可以显示,但是如果显示

2016-10-20 11:57:16 5106

原创 鼠标事件的继承操作

很多初学者都知道只要在当前窗口.cpp文件中覆写(overwrite)鼠标事件,就可以移动无标题栏的窗口ui,但是在同一个.cpp做鼠标事件,对继承和封装性不好。因此本博客主要说的是:封装分类继承做法。1.覆写继承QWidget类的鼠标事件在Qt中创建一个项目,继承的暂时选择QWidget,项目的名字为mouse在创建好项目中添加一个新类,起名为MouseMove,公有继承QWidget类在Mou

2016-10-17 22:43:18 1059

原创 论Qt中的QToolButton与QPushButton的淘气

在Qt中,按键的类定义主要有两类,一个使QToolButton,另一个就是QPushButton了,他们都是继承QWidget的控件。相同处:都是按键不同之处:1.点击触发的反应不同                    2.用图片作为按键的背景的时候不同下面详述:  1.Qt中引用的图片怎么使用        2.button按键如何设置背景图片3.上述两种不

2016-09-30 14:30:26 12116

原创 QT/E配置文档

Qt/Extended 的Ubuntu配置一)环境的搭建1.  准备工作:Qt/E环境配置需要三大文件:a)        QT文件系统: qt-creator-linux-x86-opensource-2.5.2.binb)        Qt的源码: qt-everywhere-opensource-src-4.8.5.tar.gzc)        触摸屏文件系统(作

2016-09-19 15:24:20 1466

原创 C++类中的继承

C++继承分为三种: 1.公有继承 2.私有继承 3.保护继承三种继承的用法: 1.以上的所有继承中,基类的公有成员函数和保护成员函数均可以被子类的成员函数访问 2.子类公有继承的《对象》,只能调用基类的公有函数,子类的私有击沉和保护继承的《对象》均不能调用基类的任何成员函数#include <iostream>using namespace std;class Animal{pri

2016-07-12 17:01:57 294

空空如也

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

TA关注的人

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