C++
文章平均质量分 77
flysnow010
毕业于北京科技大学,有超过20年软件开发经验。
展开
-
CL11命令行解析使用实例
CLI11提供了您在强大的命令行解析器中所期望的所有功能,具有美观、简洁的语法,并且以单个文件的形式提供,便于包含在项目中。这很容易适用于小型项目,但功能强大,足以支持复杂的命令行项目,并且可以针对框架进行定制。本来准备使用Boost库中program_options,不过boost整个头文件就有170MB,对于小小项目来说使用成本很高,还得编译boost库,感觉不划算。CLI11功能强大可以直接包含头文件使用,对小项目很友好。本文后面讲述CLL11的使用实例。原创 2024-07-18 16:02:14 · 337 阅读 · 0 评论 -
Linux下编译boost1.85
Boost提供免费的同行评审的可移植C++源库。我们强调与C++标准库配合良好的库。Boost库旨在广泛使用,并可在广泛的应用程序中使用。Boost许可证鼓励所有用户以最小的限制使用Boost库。我们的目标是建立“现有实践”并提供参考实现,以便Boost库适合最终的标准化。从库技术报告(TR1)中包含的十个Boost库开始,再到自2011年以来ISO C++标准的每次发布,C++标准委员会一直将Boost作为添加标准C++库的宝贵来源。原创 2024-07-18 13:51:09 · 291 阅读 · 0 评论 -
C++并发之环形队列(ring,queue)
最近研究了C++11的并发编程的线程/互斥/锁/条件变量,利用互斥/锁/条件变量实现一个支持多线程并发的环形队列,队列大小通过模板参数传递。环形队列是一个模板类,有两个模块参数,参数1是元素类型,参数2是队列大小,默认是10。入队操作如果队列满阻塞,出队操作如果队列为空则阻塞。原创 2024-06-25 16:50:26 · 580 阅读 · 0 评论 -
C++并发之阻塞队列(block,queue)
最近研究了C++11的并发编程的线程/互斥/锁/条件变量,利用互斥/锁/条件变量实现一个支持多线程并发的阻塞队列,队列大小没有限制。阻塞队列是一个模板类,有两个模块参数,参数1是元素类型,参数2是容器类型,可以是std::deque和std::list,默认是std::deque。入队操作没有阻塞,出队操作如果队列为空则阻塞。原创 2024-06-25 16:34:27 · 518 阅读 · 0 评论 -
C++容器之概览
在C++标准库中容器是通过模板实现的数据结构,多数可以通过迭代器统一访问,如vector、list、deque、set、map等。原创 2024-06-05 16:56:07 · 947 阅读 · 0 评论 -
C++代码优化之定义即初始化
定义即初始化,说的是变量再定义时就初始值。这在C语言中可以增加代码可读性,在C++可以提供代码执行效率。原创 2024-05-17 13:29:52 · 487 阅读 · 0 评论 -
C++共享指针相互引用性实例(std::shared_ptr,std::weak_ptr)
C++11引入了智能指针std::shared_ptr,不过std::shared_ptr随然好用,但使用不当就可能导致互相引用,导致内存无法释放。本文以实例来演示相互引用,以及解决办法。原创 2024-05-17 10:26:16 · 781 阅读 · 0 评论 -
C++智能指针之弱指针(std::weak_ptr)
从C++11开始C++语言越来向现代化语言转变。尤其是智能指针的引入,代码中不会直接使用new/delete了。C++11智能指针有三种分别是:shared_ptr,weak_ptr 和unique_ptr。原创 2024-05-16 17:45:05 · 530 阅读 · 0 评论 -
C++智能指针之共享指针(std::shared_ptr)
从C++11开始C++语言越来向现代化语言转变。尤其是智能指针的引入,代码中不会直接使用new/delete了。C++11智能指针有三种分别是:shared_ptr,weak_ptr 和unique_ptr。原创 2024-05-16 17:40:39 · 571 阅读 · 0 评论 -
C++智能指针之唯一指针(std::unique_ptr)
从C++11开始C++语言越来向现代化语言转变。尤其是智能指针的引入,代码中不会直接使用new/delete了。C++11智能指针有三种分别是:shared_ptr,weak_ptr 和unique_ptr。原创 2024-05-15 11:19:27 · 350 阅读 · 0 评论 -
C++11智能指针之一(简介)
从C++11开始C++语言越来向现代化语言转变。尤其是智能指针的引入,代码中不会直接使用new/delete了。C++11智能指针有三种分别是:shared_ptr,weak_ptr 和unique_ptr原创 2024-05-13 17:17:34 · 362 阅读 · 0 评论 -
libssh C++封装之七(File)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。File类型可以读写远程文件。原创 2024-05-12 16:26:24 · 907 阅读 · 1 评论 -
libssh C++封装之六(Dir)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。Dir类型管理远程路径,通过SFTP和Channel实现(有的服务端不支持SFtp).原创 2024-05-10 17:31:06 · 1519 阅读 · 0 评论 -
libssh C++封装之五(Sftp)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。SFtp类型基于SFTP协议管理远程文件(通过Dir和File类型来管理)。原创 2024-05-10 16:32:12 · 484 阅读 · 0 评论 -
libssh C++封装之四(SCP)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。Scp类型通过SCP协议管理远程文件,可以上传和下载文件。原创 2024-05-09 15:01:47 · 899 阅读 · 0 评论 -
C++命令行系统(三)
在嵌入式开发中,经常会利用命令行交互系统测试功能,本文描述使用C++语言开发的一个命令行交互系统,支持命令注册(C或C++格式),命令分组,执行命令,显示命令提示。原创 2024-05-06 10:51:47 · 213 阅读 · 0 评论 -
C++命令行系统(二)
在嵌入式开发中,经常会利用命令行交互系统测试功能,本文描述使用C++语言开发的一个命令行交互系统,支持命令注册(C或C++格式),命令分组,执行命令,显示命令提示。原创 2024-05-06 10:20:55 · 549 阅读 · 0 评论 -
C++命令行系统(一)
在嵌入式开发中,经常会利用命令行交互系统测试功能,本文描述使用C++语言开发的一个命令行交互系统,支持命令注册(C或C++格式命令),命令分组,执行命令,显示命令提示。原创 2024-04-30 21:04:17 · 437 阅读 · 0 评论 -
libssh C++封装之三 (Channel)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。原创 2024-04-29 18:09:51 · 661 阅读 · 0 评论 -
Linux Makefile之优化
前面写了两篇关于Makefile的文章Linux Makefile编写之静态库和Linux Makefile编写之可执行程序.虽然编译没有问题,但还有优化的空间。原创 2024-04-29 16:44:10 · 804 阅读 · 0 评论 -
Linux Makefile编写之可执行程序
编译工具有很多(make/cmake/BJam)。如果不考虑跨平台的话,还是make比较方便。使用make编译需要编写Makefile。本文编写Makefile来生成C/C++可执行程序。原创 2024-04-26 11:32:13 · 1082 阅读 · 1 评论 -
Linux Makefile编写之静态库
编译工具有很多(make/cmake/BJam)。如果不考虑跨平台的话,还是make比较方便。使用make编译需要编写Makefile。本文编写Makefile来生成C/C++静态库。原创 2024-04-25 12:03:41 · 366 阅读 · 1 评论 -
CPPTest实战演示(CppTest libssh)
CppTest是一个可移植、功能强大但简单的单元测试框架,用于处理C++中的自动化测试。重点在于可用性和可扩展性。支持多种输出格式,并且可以轻松添加新的输出格式。下面编写实际测试用例,来熟练CppTest库使用。原创 2024-04-24 16:51:19 · 242 阅读 · 1 评论 -
libssh C++封装之二(Session)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。原创 2024-04-24 16:04:51 · 865 阅读 · 0 评论 -
CPPTest实例分析(C++ Test)
CppTest是一个可移植、功能强大但简单的单元测试框架,用于处理C++中的自动化测试。重点在于可用性和可扩展性。支持多种输出格式,并且可以轻松添加新的输出格式。下面结合实例分析下CppTest如何使用。原创 2024-04-23 17:03:26 · 1601 阅读 · 0 评论 -
mingw静态链接(libgcc_s_seh-1,libstdc++-6和 libwinpthread-1)
;在Windows用mingw编译的C/C++程序默认会依赖这三个动态库:- libgcc_s_seh-1.dll- libstdc++-6.dll- libwinpthread-1.dll其实可以选择链接对应版本的静态库.原创 2024-04-23 14:10:14 · 1244 阅读 · 0 评论 -
FFMPEG C++封装(二)
这章是FFMPEG C++封装库的详细设计:- FFMPEG的初始化- Utils工具函数设置。原创 2024-03-28 07:48:12 · 714 阅读 · 2 评论 -
libssh C++封装之一(设计)
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。原创 2024-04-22 14:07:05 · 1129 阅读 · 1 评论 -
基于CppHttpLib的Httpserver
大多数嵌入式设备由于没有屏幕输出,只能通过Web页面来配置。这里利用CPPHttpLib来实现HttpServer。原创 2024-04-20 22:24:25 · 696 阅读 · 0 评论 -
FFMPEG C++封装(三)
本文描述对FFMPEG的AVPacket的C++封装。原创 2024-04-16 23:13:27 · 743 阅读 · 0 评论 -
C++多态(面向对象编程的基础)
静态多态: 重载函数和模板机制使我们编程时简化了命名和算法实现类型无关化,使代码更优雅。动态多态: 虚函数机制使我们管理相似对象更优雅,代码更简化。是面向对象编程的基础。原创 2024-04-12 17:00:12 · 146 阅读 · 0 评论 -
C++继承之虚继承实例
虚继承主要用在多继承场景中,单继承或只有一层继承关系时不会发挥作用。过度使用虚继承可能会增加额外的开销,因为需要维护虚基类的地址偏移量和查找虚基类成员的位置。我们可以看到虚继承不仅是一个技术手段,也是C++语言中解决多重继承问题的一个有效方法。原创 2024-04-11 10:43:28 · 732 阅读 · 0 评论 -
C++继承之多重继承
通过继承机制,可以利用已有的对象类型来定义新的对象类型。所定义的新的对象类型不仅仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。多重继承 派生类可以从多个父类派生。原创 2024-04-10 17:42:44 · 374 阅读 · 0 评论 -
C++继承之private继承
通过继承机制,可以利用已有的对象类型来定义新对象类型。所定义的新对象类型不仅仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。private继承 派生类中父类public成员变成private成员。原创 2024-04-10 17:03:33 · 800 阅读 · 0 评论 -
C++继承之public继承
通过继承机制,可以利用已有的对象类型来定义新对象类型。所定义的新对象类型不仅仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。public继承 派生类中父类public成员还是public成员。原创 2024-04-09 17:22:01 · 206 阅读 · 0 评论 -
C++ 11 列表按字段初始化对象
C++要想使用{}按字段初始化对象,对象不能有构造函数。原创 2024-04-03 15:50:42 · 318 阅读 · 0 评论 -
C++ 11 初始化对象
在C++11中,可以使用多种方式来初始化对象。原创 2024-04-03 14:36:24 · 186 阅读 · 0 评论 -
C函数strtok使用详解
strtok和strtok_r都要求传入的参数非常量字符串,不过strtok_r是可重入版本,线程安全版本。原创 2024-03-27 16:23:59 · 193 阅读 · 0 评论 -
FFMPEG C++封装(一)(C++ FFMPEG)
FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C++封装,形成C++ FFMPG库。原创 2024-03-27 07:58:30 · 1269 阅读 · 0 评论 -
C++ 命名空间(Namespace)
在C++中,命名空间(Namespace)是一种将标识符组织在一起的方式,用于防止名字冲突。它可以防止全局命名的冲突,让你的代码更容易维护,也可以帮助控制程序的可见性,避免在全局命名空间中引入不必要的名字。原创 2024-03-26 15:47:19 · 358 阅读 · 0 评论