- 博客(21)
- 资源 (24)
- 收藏
- 关注
原创 offsetof和container_of的介绍
offsetof定义//include/linux/stddef.h#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)目的获得结构体(TYPE)的变量成员(MEMBER)在此结构体中的偏移量用法#include <stdio.h>#define offsetof(TYPE, ME...
2019-06-27 15:08:14 171
原创 命名空间
可能某种情况下,写了一个fun()函数,而正好所引用的库中也包含fun()函数,这个时候编译器不知道到底该用哪个函数,就会报错。基于这种情况下,使用命名空间(namespace)来解决该问题。 简单使用命名空间#include <iostream>using namespace std;namespace hello { void fun() { ...
2019-06-26 15:27:25 102
原创 C++多态
多态定义在面向对象语言中,接口的多种不同的实现方式即为多态。通俗一点的说就是一个父类中有一个函数fun(),有很多子类都继承该父类,而每一个子类中又各自实现了自己的fun()。这些fun()的关联点是函数名称相同甚至参数相同,根据对象的不同调用fun()函数所做的动作也就不同。在C++中说多态先要说虚函数、纯虚函数、普通函数的含义。 虚函数、纯虚函数虚函数:通过关键字virtua...
2019-06-26 11:56:35 270
原创 C++重载
继承继承就是我们依据另一个类来定义一个类,已有的类称为基类,新建的类称为派生类,我更习惯叫父类和子类。有如下几个方面描述继承:访问的权限:子类可以访问父类中所有的非私有成员,也就是说如果父类成员不想被子类的成员函数访问,则应在父类中声明为private。继承的类型:同样分为public、private、protected,通常情况下都是使用public来继承多继承:就是一个子类可以有多个父...
2019-06-25 18:26:47 2020
原创 访问修饰符、友元、this指针
类的构建和使用中描述了部分类和对象的概念,例如构造/析构函数,类函数,下面介绍其他几种概念。 访问修饰符访问修饰符有:public、private、protected三种,描述如下:public:公有成员,在类的外部是可访问的,可以不通过类函数来进行访问和修改private:私有成员,在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员protected...
2019-06-25 17:58:33 187
原创 Class的构建和使用
构建class下面描述的是一个简单的class,有一个变量value,一个类函数,一个构造函数,一个析构函数,其中构造函数和析构函数不是必须存在的。class hello_world{public: int value; /* 成员 */public: void fun(int a, int b); /* 类函数 */public: hello_world();...
2019-06-25 17:21:36 573
原创 VSCode设置插件同步
1、安装Setting Sync插件2、登陆Github,参照Settings Sync Support进行操作3、打开vscode,ctrl+shift+p输入sync,找到update/upload settings,输入上一步生成的key,回车,备份成功之后会有控制台提示4、打开设置,输入sync,找到设置同步使用的Github GIST ID,恢复的时候用ID:69f1332e25...
2019-06-20 10:11:15 2537
原创 win10将文件固定到开始屏幕
对于普通的软件可以直接通过右键->固定到"开始"屏幕完成固定到开始屏幕的操作,但是其他的文件呢,例如.jar类型的文件,我希望将logfilter.jar固定到开始屏幕,执行如下操作:1、创建一个logfilter.jar的快捷方式2、打开C:\Users\MI\AppData\Roaming\Microsoft\Windows\Start Menu\Programs,将logfilte...
2019-06-19 16:41:32 7361
原创 platform设备驱动
platform_busplatform_bus是一种虚拟总线,作用就是将设备信息和驱动程序进行分离,platform_bus会维护两条线,一条是设备,一条是驱动。当一个设备被注册到总线上面的时候,总线会去搜索对应的驱动,反之如果驱动被注册到总线,总线也会去找对应的驱动。描述设备信息的方式有2种,一种是通过手动填充paltform_device结构体的方式进行,另一种是通过设备树的方式进行。&...
2019-06-17 18:53:03 1938
原创 Linux 下获取目录下的所有文件
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <dirent.h>static int get_files(){ DIR *dirp; struct dirent *dp; dirp = opendir("."); if ...
2019-06-14 18:35:24 3082
原创 标准IO的操作函数
FILE *fp = NULL;FILE *fopen(const char *path, const char *mode);size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *s...
2019-06-14 18:28:50 310
原创 Linux修改文件所有者和文件所在组
修改文件所属组chgrp 组名 文件名/目录 -R修改文件拥有者chown 账户名称 文件名/目录 -R修改文件权限chmod 777 文件名/目录 -R-R表示递归的修改,连同子目录下的所有文件、目录...
2019-06-14 17:03:46 522
原创 Linux增加swap交换区
某些时候当运行内存不够的时候,可以把物理内存中的一部分空间释放出来,以供当前运行的程序使用。步骤如下:1、创建文件夹$ mkdir swap2、进入文件夹$ cd swap3、创建swap文件,count为大小,500000=512MB,下面命令的空间大小为8000000 = 8 * 1000 * 1000 = 8G$ dd if=/dev/zero of=swap bs=1024 c...
2019-06-14 16:54:57 168
原创 变量作用域
变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。静态局部变量具有局部作用域。它只被初始化一次,自从第一次初始化直到程序与你新内阁结束都一直存在,他和全...
2019-06-14 16:44:17 1572
转载 Linux设置printf颜色
#include <stdio.h>/*显示:0(默认)、1(粗体/高亮)、22(非粗体)、4(单条下划线)、24(无下划线)、5(闪烁)、25(无闪烁)、7(反显、翻转前景色和背景色)、27(无反显)颜色值:0(黑)、1(红)、2(绿)、 3(黄)、4(蓝)、5(紫)、6(深绿)、7(白)颜色分为背景色和字体色,30~39(30+颜色值)用来设置字体色(前景色),40~49...
2019-06-14 13:55:18 666
原创 Linux C 回调(callback)函数
callback:即回调函数,是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。实例如下:callback.h中声明callback函数:#ifndef __CALLBACK_H__#d...
2019-06-13 15:02:20 5704
原创 Linux C 互斥锁的使用
互斥锁的作用保护共享数据: 在并发机制的情况下,有时候会有多个线程同时访问同一片数据,为了保护数据操作的准确性就需要通过加锁来进行保护。保持操作互斥: 可能一个程序会有多个操作,但是同一个时间只能有一个操作被执行,例如a/b两个操作,如果a被执行,b就不能被执行,同理b被执行,a就不能执行操作函数pthread_mutex_t lock; /* 互斥锁定义 */pthread_mute...
2019-06-13 14:45:22 23121
原创 利用mtrace来定位memory leak
mtrace 来自GNU(分配内存必须使用glibc的内存分配函数,,使用方法比较简单,例子如下:#include <stdlib.h>#include <stdio.h>#include <mcheck.h>void mtrace_test(){ char *array = (char *)malloc(100 * sizeof(char)...
2019-06-13 11:20:05 351
原创 Linux下获取malloc实际分配的内存大小
使用的函数原型如下:#include <malloc.h>size_t malloc_usable_size(void *_ptr)做了如下测试void malloc_test(){ char *array = (char *)malloc(1 * sizeof(char)); int ntem = malloc_usable_size(array); ...
2019-06-13 10:45:01 7580
原创 宏定义中使用for循环
typedef struct list_data { int value;} list_data_t;#define list_for_each(data) \ int i; \ for (i = 0; i < data.value; i++) { \ printf("hello world\n"); \ }int main(int ...
2019-06-05 10:56:15 9047
原创 input子系统
input驱动#include <linux/module.h>#include <linux/init.h>#include <linux/atomic.h>#include <linux/sched.h>#include <linux/kthread.h>#include <linux/delay.h>#i...
2019-06-03 16:53:00 255
linux_fpbigtool.zip
2021-03-03
ndk-build.exe
2020-07-02
logfilter_2.1.zip
2020-06-11
Total.Uninstall.6.27.0.CHS.Pro.x64.7z
2020-03-24
cmder.tar.gz
2020-03-19
微信大礼包图书PDF(10本).rar
2019-07-29
scull_examples.zip
2019-06-27
Linux设备驱动程序设计入门.pdf.tar.gz
2019-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人