- 博客(89)
- 资源 (1)
- 收藏
- 关注
原创 【..\OBJ\MALLOC.axf: error: L6047U: The size of this image (37652 bytes) exceeds the maximum allowed】
keil5,没有注册。下载Keil Generic Keygen工具。
2025-08-18 01:10:58
389
原创 【c语言,位的操作详细作用和用法】
2.GCC内置函数:如 __builtin_popcount() 快速计算1的个数。3.SIMD指令:现代CPU支持SIMD位操作(如AVX-512的位掩码操作)。1.复合赋值运算符:&=, |=, <<=, >>= 等。
2025-07-20 19:27:06
358
原创 qt 开发书籍介绍
内容:涵盖QML语言基础、事件处理、Qt Quick基本元素,辅以ECMAScript(JavaScript)语言介绍,快速熟悉Qt Quick开发过程。内容:涵盖Qt Creator集成开发环境的使用、图形动画、影音媒体处理、网络通信等模块,通过787个子文件的源码包和700余页PPT辅助学习。内容:涵盖开发环境搭建、界面控件设计、数据库编程、多线程与网络通信等核心模块,通过对话框设计、信号槽机制等案例阐述模块化开发思路。内容:结构合理,内容详实,适合对Python、Qt和PyQt编程感兴趣的开发者。
2025-07-04 15:51:16
991
原创 SPI、I2C和UART三种串行通信协议的--------简单总结
串行通信协议对比与选型指南 SPI、I2C和UART是三种主流的串行通信协议,各有特点: SPI:高速(50MHz+)、全双工,适合Flash存储、显示屏等高速场景,但需4+N条线 I2C:省引脚(2线)、多设备支持,适合传感器、RTC等低速系统,但速度较低(3.4MHz) UART:简单异步通信,适用于调试串口、无线模块,可扩展长距离传输 选型建议: 高速选SPI,多设备选I2C,远距离用UART+RS485,低功耗优先I2C。需综合速率、设备数量及布线复杂度选择。
2025-07-02 23:38:32
490
原创 笔记:ubuntu---通配符--用于匹配文件名或路径名
Linux通配符与命令组合使用指南 本文详细介绍了Linux系统中通配符和命令组合的使用方法。通配符部分讲解了*、?、[]、{}等符号的功能,包括匹配任意字符、单个字符、字符集合和模式扩展等用法。命令组合部分介绍了管道(|)、分号(;)、与操作符(&&)、或操作符(||)的使用场景,包括顺序执行、条件执行等操作。文章还提供了大量实用示例,如批量文件操作、搜索过滤等,并强调了使用时的注意事项,如大小写敏感、隐藏文件处理等。这些技巧能显著提升命令行操作效率,适合Linux用户学习参考。
2025-06-18 09:22:35
1051
原创 cmake——简单介绍+代码实例
CMake 是一个,用于管理软件项目的。它通过一个平台无关的配置文件来生成本地化的构建文件(如 Makefile、Visual Studio 项目文件等),从而简化跨平台开发的构建流程。以下是 CMake 的详细介绍和代码示例。
2025-06-17 11:52:56
1035
原创 cmake----预定义变量
预定义变量:CMake提供了丰富的内置变量,涵盖项目信息、编译器、平台等。条件逻辑:通过if()和平台变量(如WIN32)实现跨平台逻辑。调试输出:使用message(STATUS …)输出变量值,帮助调试和理解构建环境。通过灵活使用这些变量,可以编写出更健壮、可移植的CMake脚本。
2025-06-17 01:36:36
795
原创 STL容器分类总结
C++ STL容器分类与应用摘要 STL容器分为四大类:序列容器(vector、deque等)、关联容器(set、map等)、无序关联容器(unordered_set等)和容器适配器(stack、queue等)。序列容器保持插入顺序,关联容器有序存储,无序容器基于哈希表实现快速查找。选择容器需考虑:随机访问选vector/deque;频繁插入/删除选list;有序查找用set/map;快速查找用unordered系列;特定数据结构用适配器。典型应用场景包括:动态数组(vector)、字典(map)、哈希表(
2025-06-15 15:57:58
890
原创 Makefile 编译规则,实例1(简单的原理)
下面的依赖文件,最终到源程序main.c。所以makefile文件,编译源程序,生成中间文件并最终生成可执行文件。这只是一个文件,我们一般工程都是多文件,多文件写法不会这么繁琐,后面有多文件的更新,这篇文章就是为了演示makefile的原理。上面的Makefile文件和这里的是一样的。上面是一步生成,下面是分步形成。中间生成文件有点多,(main.i 、main.s 、 main.o)。,用make命令来编译。用简单的规则来演示。
2025-06-08 06:59:03
489
原创 C++语言多个版本的迭代
C++的每个版本都在不断进化,从C++98的标准化到C++20的模块和协程,语言的功能和表达能力得到了极大的提升。现代C++(C++11及以后)引入了许多高级特性,使得代码更简洁、更安全、更高效。首次标准化:C++的第一个国际标准,奠定了现代C++的基础。小修订版本:对C++98的缺陷进行修复,未引入新特性。标准模板库(STL):引入了容器、算法、迭代器等。重大更新:引入了模块、协程等革命性特性。重大更新:被称为“现代C++”的起点。增量更新:对C++11的补充和改进。重要更新:引入了许多实用特性。
2025-06-05 02:26:30
488
原创 在 C++ 中,static 是一个多功能关键字,其用法和语义
在 C 语言中, static 的主要用法包括:静态局部变量:延长局部变量的生命周期。静态全局变量:限制全局变量的可见性。静态函数:限制函数的可见性。在 C 语言中,static 是一个关键字,其用法和语义与 C++ 类似,但更简单。
2025-06-05 02:13:42
547
原创 constexpr 是 C++11 引入的关键字
/ 编译时常量// 合法,MAX_SIZE 在编译期已知要求:函数体只能包含返回语句或静态断言,参数和返回值必须是字面类型(如基本类型、枚举、指针等)。// 编译期计算,val = 100// 合法要求:构造函数体只能包含简单的初始化逻辑。int x, y;// p 在编译期构造。
2025-06-04 23:30:24
569
原创 C++ 中的 const 知识点详解,c++和c语言区别
/ 常量,初始化后不可修改// 错误:不能修改常量// 常量,初始化后不可修改// 错误:不能修改常量。
2025-06-04 23:28:52
1191
原创 在C++中,头文件(.h或.hpp)的标准写法
通过遵循这些规则,可以确保头文件的正确性和可维护性,同时减少编译错误和命名冲突的风险。使用#ifndef、#define和#endif防止头文件被多次包含。将相关类/函数放入命名空间以避免命名冲突。按需包含标准库头文件(如、等)。添加必要的注释说明头文件的功能。尽量使用前向声明减少依赖。
2025-06-04 18:28:12
622
原创 C++ 类声明和定义分离的代码实例
在C++中,通常将类的声明(接口)放在头文件(.h或.hpp)中,而将类的定义(实现)放在源文件(.cpp)中。这是一种良好的编程实践,有助于代码的组织和维护。头文件守卫:#ifndef、#define和#endif防止头文件被多次包含。这种分离方式使得代码更易于维护,减少了编译依赖,并支持更模块化的开发。├── MyClass.h // 类声明(头文件)├── MyClass.cpp //类定义(源文件)声明与定义分离:头文件只包含声明,源文件包含实现。访问控制:私有成员只能在类内部访问。
2025-06-04 17:49:34
253
原创 c++ 命名规则
总结类名:大驼峰法(PascalCase)。变量/函数名:小驼峰法(camelCase)。全局常量:使用全大写字母加下划线分隔(SNAKE_CASE)。常量/宏:全大写加下划线(SNAKE_CASE)。静态成员变量:可加前缀s_或后缀_(团队约定)命名空间/文件:全小写,可加下划线。在C++编程中,良好的命名规则对于代码的可读性、可维护性和团队协作至关重要。规则:使用全大写字母加下划线分隔(SNAKE_CASE),并避免与现有标识符冲突。
2025-06-04 17:48:09
982
原创 ubuntu中,文本编辑器nano和vim区别,vim的用法
nano底部明确显示快捷键,用户无需记忆即可操作。Vim 的模式化设计(如普通模式、插入模式、命令行模式)需要用户适应,但掌握后效率极高。选择 nano:适合新手、快速编辑或资源受限环境。选择 Vim:适合开发者、需要高效编辑或复杂任务的用户。两者并非对立,可根据实际需求切换使用。例如,在远程服务器上快速修改配置文件时用 nano,在本地开发时用 Vim。nano 的轻量级设计使其在资源受限的环境(如嵌入式系统或旧硬件)中表现优异。
2025-05-29 15:08:58
1950
原创 在 Linux 中,目录权限,mkdir -m 选项,用法
在 Linux 中,mkdir -m 选项用于在创建目录时直接指定权限模式(无需依赖默认的 umask)。默认权限:若省略 -m,目录权限由 umask 决定(通常 777 -umask)。执行权限(x):目录需要执行权限才能进入(cd)或访问其内容。安全建议:避免随意使用 777,可能引发安全风险。第三位:其他用户(Others)权限。第一位:所有者(Owner)权限。第二位:所属组(Group)权限。八进制 符号表示 权限说明。使用 u(所有者)、
2025-05-28 18:31:15
554
原创 Makefile 编译规则,实例2
在 Ubuntu 环境下,使用 Makefile 可以帮助自动化编译过程,尤其是在项目包含多个源文件时。首先,创建两个源文件:main.c 和 test1.c,以及一个头文件 test1. h。这将自动编译 main.c 和 test1.c,并生成可执行文件 my_program。
2025-05-28 00:51:04
373
原创 ubuntu中,c和c+程序,预编译、编译、链接和运行命令
本文介绍了在Ubuntu系统下编译和运行C/C++程序的详细步骤。主要内容包括:1) 安装gcc和g++编译器;2) C程序从预处理到链接的完整编译过程;3) C++程序的编译流程;4) C和C++在编译器、文件扩展名和头文件等方面的关键区别;5) 调试、优化和多文件编译等注意事项。通过简单示例演示了从源代码到可执行文件的完整处理流程,适合初学者快速掌握Linux环境下C/C++程序的开发方法。
2025-05-27 19:08:51
442
原创 类和对象------2
本文探讨了C++面向对象编程中的几个关键概念。首先,C++通过封装将数据和操作函数关联起来,但成员变量和函数是分开存储的,非静态成员变量存储在对象中,而成员函数则独立于对象存在。其次,this指针是C++实现封装的重要机制,它隐含在成员函数中,指向调用该函数的对象,用于区分不同对象调用同一函数的情况。此外,const修饰的成员函数不能修改普通成员变量,除非变量被mutable修饰。最后,友元函数允许外部访问类的私有成员,提供了对类内部数据的特殊访问权限。这些机制共同构成了C++面向对象编程的基础。
2025-05-20 18:22:20
837
原创 C++ 中,using namespace std
适合快速原型开发和小型项目 污染全局命名空间:引入所有 std 符号,可能与其他第三方库冲突(如 boost::shared_ptr vs std::shared_ptr).🔍 关键原则:最小化命名空间污染,优先通过显式限定或选择性引入保持代码清晰。显式限定:直接使用 std::cout、std::vector。✅ 推荐使用:小型项目、局部作用域、明确无冲突的场景。⚠️ 避免使用:头文件、全局作用域、大型多人协作项目。方法 代码示例 适用场景。缺点(潜在风险)。
2025-05-16 15:37:49
641
原创 c++,linux,多线程编程详细介绍
在Linux环境下使用C++进行多线程编程,可利用POSIX线程(pthread)或C++11标准库。线程是进程中的执行单元,共享进程的地址空间和数据,但拥有独立的执行栈和寄存器状态。多线程编程可提高程序响应性、充分利用多核资源,但需注意线程安全和资源竞争问题。线程池通过预创建一组线程,并将任务提交到任务队列中,由空闲线程执行任务。线程池可有效管理线程资源,提高程序性能。
2025-05-16 15:18:47
379
原创 c++,windows,多线程编程详细介绍
在 Windows 平台上使用 C++ 进行多线程编程,可以通过 C++11 标准库 或 Windows API 实现。
2025-05-15 21:34:38
440
原创 Makefile -------- 简单介绍+命令分析
Makefile 是用于自动化构建 C/C++ 等项目的工具,通过定义规则和依赖关系,实现代码的编译、链接等过程的自动化。它是 Unix/Linux 环境下最常用的构建工具之一,也是 GNU Make 的核心配置文件。
2025-05-15 16:40:20
679
原创 在C++中进行套接字编程时,主要使用以下头文件
如socket(), bind(), connect(), listen(), accept(), send(), recv()等。如inet_pton(), inet_ntop(), htonl(), htons(), ntohl(), ntohs()如getaddrinfo(), getnameinfo(), gethostbyname()C++20工作草案中的<std/net> (尚未正式发布)这些库提供了更C++友好的接口和更好的异常处理。包含套接字相关函数和结构体的基本定义。
2025-05-14 18:37:24
491
原创 C++ 套接字函数详细介绍
C++ 中的套接字编程主要通过 BSD 套接字 API 实现,涉及网络通信的基本操作。常用的函数包括 socket() 用于创建套接字,bind() 用于绑定地址和端口,connect() 和 listen() 用于建立连接,send() 和 recv() 用于数据传输,以及 close() 和 shutdown() 用于关闭套接字。此外,setsockopt() 和 getsockopt() 用于设置和获取套接字选项,inet_pton() 和 inet_ntop() 用于 IP 地址的文本与二进制格式转
2025-05-14 18:31:51
639
原创 UDP协议详细讲解及C++代码实例
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、简单的、基于数据报的传输层通信协议。无连接:不需要建立连接即可发送数据。不可靠:不保证数据包的顺序和到达。高效:由于没有复杂的连接和可靠性机制,UDP传输效率较高。适用场景:适用于实时性要求高、可以容忍少量数据丢失的场景,如视频流、实时游戏等。UDP协议通过无连接、简单高效的特性,适用于实时性要求高的场景。上述代码示例展示了UDP客户端和服务端的完整交互流程,适用于需要高效传输且能容忍少量数据丢失的场景。
2025-05-13 21:08:07
544
原创 TCP协议详细讲解及C++代码实例
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:通信前需建立连接(三次握手),结束后需释放连接(四次挥手)。可靠性:通过序列号、确认应答(ACK)、超时重传、校验和等机制确保数据无丢失、无重复、按序到达。流量控制:使用滑动窗口机制,动态调整发送速率,避免接收方缓冲区溢出。拥塞控制:通过慢启动、拥塞避免、快速重传、快速恢复等算法避免网络拥塞。
2025-05-13 20:57:19
778
原创 ubuntu---常用命令2
本文总结了 Ubuntu 系统中 100 条常用命令,涵盖文件管理、系统信息、用户权限、网络配置、软件包管理等多个方面。文件管理部分包括 ls、cd、rm 等命令,用于查看、切换、删除文件和目录。系统信息与管理部分涉及 top、ps、df 等命令,帮助用户监控系统资源和进程。用户与权限管理部分包括 sudo、chmod、passwd 等命令,用于管理用户和文件权限。网络配置与管理部分介绍了 ifconfig、ping、ssh 等命令,用于网络连接和远程操作。软件包管理部分涉及 apt-get、dpkg 等命
2025-05-13 17:32:25
439
原创 c++ 中的函数
能使名字方便使用,是任何程序设计语言的一个重要特征!我们现实生活中经常会碰到一些字在不同的场景下具有不同的意思,比如汉语中的多音字“重”。当我们说: “他好重啊,我都背不动!”我们根据上下文意思,知道“重”在此时此地表示重量的意思。如果我们说“你怎么写了那么多重复的代码?维护性太差了!”这个地方我们知道,“重”表示重复的意思。同样一个字在不同的场景下具有不同的含义。那么在c++中也有一种类似的现象出现,同一个函数名在不同场景下可以具有不同的含义。
2025-05-11 23:38:08
1052
原创 c++中 引用的用法
引用是c++对c的重要扩充。在c/c++中指针的作用基本都是一样的,但是c++增加了另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference),它也存在于其他一些编程语言中,并不是c++的发明。变量名实质上是一段连续内存空间的别名,是一个标号(门牌号)程序中通过变量来申请并命名内存空间通过变量的名字可以使用存储空间对一段连续的内存空间只能取一个别名吗?c++中新增了引用的概念,引用可以作为一个已定义变量的别名。
2025-05-10 19:02:31
359
原创 c、c++----- const区别
const单词字面意思为常数,不变的。它是c/c++中的一个关键字,是一个限定符,它用来限定一个变量不允许改变,它将一个对象转换成一个常量。A = 100;//编译错误,const是一个常量,不可修改c语言全局const会被存储到只读数据段。c++中全局const当声明extern或者对变量取地址时,编译器会分配存储地址,变量存储在只读数据段。两个都受到了只读数据段的保护,不可修改。*p = 200;以上代码在c/c++中编译通过,在运行期,修改constA的值时,发生写入错误。
2025-05-10 18:10:05
1163
原创 c++ 了解
temp在内存中有地址,10没有,但是可以Read到它的值。在c++中可以放在赋值操作符左边的是左值,可以放到赋值操作符右面的是右值。左值为Lvalue,L代表Location,表示内存可以寻址,可以赋值。c++语言三目运算表达式返回值为变量本身(引用),为左值,可以赋值。在C++,不同类型的变量一般是不能直接赋值的,需要相应的强转。右值为Rvalue,R代表Read,就是可以知道它的值。c语言三目运算表达式返回值为数据值,为右值,不能赋值。有些变量即可以当左值,也可以当右值。
2025-05-10 13:02:07
180
原创 c++ using使用
它不会影响任何其他的文件,所以可以在每一个实现文件中调整对命名空间的控制。比如,如果发现某一个实现文件中有太多的using指令而产生的命名冲突,就要对该文件做个简单的改变,通过明确的限定或者using声明来消除名字冲突,这样不需要修改其他的实现文件。**注意:**使用using声明或using编译指令会增加命名冲突的可能性。也就是说,如果有名称空间,并在代码中使用作用域解析运算符,则不会出现二义性。我们刚讲的一些东西一开始会觉得难一些,这些东西以后还是挺常用,只要理解了它们的工作机理,使用它们非常简单。
2025-05-10 12:10:58
404
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人