自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QtnProperty:一个基于 Qt 框架的第三方高级属性库

QtnProperty是一个基于Qt框架的高级属性管理库,提供比原生Qt属性系统更强大的功能。它支持树状属性层次结构、内置可视化编辑器、多对象批量编辑、属性状态管理以及序列化功能。核心特性包括:1)任意深度属性嵌套;2)变更前/后双重信号机制;3)完整的状态控制(禁用/隐藏/只读);4)内置丰富数据类型和自定义扩展能力;5)支持代码生成工具QtnPEG。该库特别适合开发需要复杂属性配置界面的应用,如编辑器、IDE和配置工具,通过统一API简化了属性管理流程,显著提升开发效率。

2026-05-01 20:30:48 440 2

原创 Qt程序设计涉及到的开发软件

Qt安装目录包含多个平台的开发工具链,主要分为三大类:1)MSVC2019_64工具集,含qmake/moc/uic等构建工具、Designer界面设计器、Linguist翻译工具及windeployqt部署工具;2)MinGW工具链,提供GCC兼容开发环境;3)WebAssembly专用工具链,支持浏览器端应用开发。各平台工具功能对应但适配不同目标环境,如wasmdeployqt替代桌面端的部署工具。工具按功能分为构建编译、UI设计、本地化支持、调试诊断等类别,通过标准

2026-05-06 21:40:50 394 2

原创 浅谈LLVM

LLVM是一套模块化、可重用的编译器基础设施,已成为现代C++开发的核心工具链。其采用三阶段架构(前端生成LLVMIR、优化器优化IR、后端生成机器码),通过Clang提供比GCC更快的编译速度和更优的错误提示。LLVM工具链包括Clangd(代码补全)、Clang-Tidy(静态分析)、Clang-Format(代码格式化)和LLDB(调试器),显著提升Qt开发效率。文章详细介绍了LLVM的安装配置、CMake集成方法,并提供了完整的Qt项目示例,展示如何利用LLVM优化构建流程和代码质量。建议开发者从C

2026-05-04 22:00:23 381

原创 WinFlex: Windows 平台的 Flex 词法分析器

WinFlex是Flex词法分析器生成器的Windows移植版本,用于将.l/.lex格式的词法规则转换为C/C++代码,实现字符流到记号流的转换。它完全兼容Flex语法,与Bison配合可构建编译器前端。安装简单,解压后配置PATH即可使用。典型使用流程包括编写词法规则文件(.l)、生成C代码并编译运行。WinFlex支持Visual Studio和CMake集成,适用于编译器开发、配置解析等场景。相比传统Lex,WinFlex具有Windows原生支持、高效性能等优势,是Windows平台词法分析器开发

2026-05-04 16:29:43 509

原创 Qt实现带多选功能的组合复选框

本文介绍了一个基于Qt的带复选框多选功能的掩码组合框QMaskComboBox的实现。该控件继承自QComboBox,通过uint64_t位掩码管理选项状态,使用QListWidget+QCheckBox实现多选下拉列表功能。核心特性包括:支持通过位掩码设置和获取选中状态;下拉框隐藏时发送selectMaskPopup信号通知当前掩码值;文本框显示选中项拼接结果,并通过工具提示显示完整选中项。实现关键点包括:重写hidePopup()方法发送信号、使用事件过滤器处理文本框点击、通过refresh()方法动态

2026-04-30 23:21:51 323

原创 CMake基础: Qt之qt5_wrap_ui

qt5_wrap_ui是Qt5提供的CMake宏命令,用于调用uic工具将.ui文件转换为C++头文件。该宏自动生成ui_<basename>.h文件,包含界面类定义和初始化代码。使用方式为qt5_wrap_ui(OUTPUT_VAR UI_FILES),生成的头文件需手动包含到项目中。相比现代AUTOUIC自动处理机制,qt5_wrap_ui更适合需要精细控制构建流程的场景。Qt6中保留了类似功能,但推荐使用更简洁的qt_add_ui命令。开发者可根据项目需求选择手动或自动UI文件处理方式。

2026-04-30 22:39:45 449

原创 WaitingSpinnerWidget: 一个高度可配置的自定义Qt等待加载动画组件

摘要: QtWaitingSpinner是一个轻量级自定义控件,用于在Qt应用中优雅地展示加载动画,避免GIF资源或自绘控件的缺点。支持C++(Qt5/6)和Python(PyQt/PySide)版本,提供丰富的定制选项,包括颜色、转速、线条样式等。集成方式灵活,可直接引入源码或通过库安装。支持模态对话框、异步操作等高级用法,并解决动画卡顿、样式不生效等常见问题,显著提升用户体验。 (字数:150)

2026-04-26 14:26:12 423

原创 HDF5: 大数据的 “超级容器“

HDF5是一种高效的二进制文件格式,专为存储和管理大规模科学数据而设计。它具有层次化结构(类似文件系统),支持多维数组存储,并集成了元数据管理功能。核心优势包括:高效部分读取能力,无需加载整个文件;内置压缩和并行I/O支持,适合TB级数据处理;自我描述特性确保数据长期可读性;跨平台兼容性支持多种编程语言访问。相比CSV、JSON等文本格式,HDF5在存储效率、访问速度和数据结构化方面具有显著优势,特别适合AI训练、科学计算等需要处理复杂多维数据的场景。其分块存储和虚拟数据集特性使其能够轻松应对数据规模的增长

2026-04-23 22:50:49 658

原创 C++中TAS和CAS实现自旋锁

TAS和CAS是CPU提供的两种基础原子指令,用于解决多线程并发问题。TAS(Test-And-Set)强制写入内存,适合简单自旋锁实现但多核性能差;CAS(Compare-And-Swap)条件写入,支持无锁编程,是多核高并发场景的首选。CAS可实现高性能自旋锁、无锁计数器及安全变量更新,相比TAS能显著减少缓存颠簸。测试代码展示了TAS和CAS自旋锁的实现差异,以及CAS在无锁计数器中的应用,证明CAS在现代并发编程中的优越性能和灵活性。

2026-04-23 21:47:35 282

原创 CMake进阶:宏CMakeFindDependencyMacro介绍

CMakeFindDependencyMacro 是 CMake 官方内置模块,用于在库的 XXXConfig.cmake 配置文件中安全查找依赖。其核心优势包括: 标准化:官方支持,无需手写宏代码。 自动处理参数:继承 QUIET/REQUIRED,提供友好错误提示。 优化依赖查找:避免重复查找传递性依赖(如菱形依赖 A→B→C→D)。 精准去重(CMake 3.26+):通过 SHA256 哈希区分不同参数组合的依赖。 使用方式: 在 XXXConfig.cmake 开头引入模块 inclu

2026-04-22 21:59:03 700

原创 MobaXterm:Windows 远程工作全能工具箱

MobaXterm是一款专为Windows设计的全能远程管理工具,集成了SSH、RDP、VNC等10+远程协议,内置X11服务器和Unix命令行工具。它支持多标签会话管理、自动SFTP文件传输、SSH隧道等功能,并提供便携版和专业版两种选择。使用时可轻松创建SSH连接、进行文件传输和端口转发配置,还能通过高级技巧优化会话管理和终端效率。适用于Linux服务器运维、嵌入式开发、数据库管理等场景,是提升跨平台工作效率的理想选择。

2026-04-21 22:22:24 494

原创 QLabel设置富文本,过长用省略号显示的方法

本文介绍了在Qt中使用QLabel显示富文本(HTML)时,原生setElideMode失效的问题及其解决方案。通过QFontMetrics类可以精准计算文本渲染尺寸,实现基于控件宽度的自动截断而非固定字数判断。文章详细讲解了QFontMetrics的核心方法,包括文本宽度计算、自动省略超长文本等,并提供了两种实用方案:简单方案通过固定汉字数量截断,推荐方案则根据Label宽度自动生成省略文本。特别强调了富文本需先转为纯文本计算,以及控件大小变化时需重算的必要性,为Qt界面开发中的文本显示问题提供了完整解决

2026-04-14 22:15:24 363

原创 cpolar(极点云): 一款主流的内网穿透工具

Cpolar是一款高效的内网穿透工具,支持HTTP/HTTPS/TCP等多种协议,可在Windows/macOS/Linux等平台运行。它通过反向代理和长连接技术,将内网服务安全映射到公网,解决NAT/防火墙隔离问题。安装简单,Windows解压即用,Linux支持一键脚本,macOS可通过brew安装。使用前需官网注册获取authtoken认证。核心功能包括:一键穿透本地服务(如80端口网站或22端口SSH)、Web管理界面(localhost:9200)、免费随机域名及付费固定域名选项。其底层采用&qu

2026-04-12 22:18:22 652 1

原创 windows和linux使用system启动进程是一样的吗?

摘要:本文分析了在Ubuntu系统中使用system()启动子进程时出现的端口继承问题。与Windows不同,Linux的system()通过fork()+execve实现,默认会继承父进程所有文件描述符(包括监听端口),导致端口占用问题。文章详细对比了Windows和Linux的进程创建机制差异,并提出了三种解决方案:1)创建socket时设置SOCK_CLOEXEC标志;2)使用fcntl设置FD_CLOEXEC;3)推荐使用posix_spawn替代system(),通过精细控制文件描述符继承来彻底解

2026-04-10 22:43:09 725 1

原创 Linux 下用 VS Code 高效调试(二)

本文介绍了VSCode中CMake工程的配置方法,重点解析了settings.json文件中的核心配置项。主要内容包括:基础路径与生成器配置、构建过程控制、工具链设置、调试配置等关键参数;详细说明了变量替换系统,支持环境变量、命令替换等功能;提供了跨平台的通用配置示例,涵盖自动区分构建类型、并行编译、代码补全支持等实用功能。该配置适用于Windows/Linux系统,支持GCC/MinGW/MSVC/Ninja等多种工具链,开箱即用。

2026-04-09 22:33:27 392

原创 Oat++: 一个轻量级、高性能、零依赖的 C++ Web 框架

Oat++是一个高性能、零依赖的现代C++ Web框架,专为构建可扩展的Web服务和RESTful API设计。它具有同步和异步双API模式,支持高并发处理,内置JSON序列化、DTO对象映射和依赖注入等功能。框架适用于嵌入式设备、IoT、微服务等多种场景,通过Swagger集成可自动生成API文档。Oat++以纯C++实现,跨平台支持良好,相比其他C++框架具有更优的性能和更小的资源占用,特别适合对性能和移植性要求高的项目开发。

2026-04-09 22:08:08 729

原创 RTTR: 一款MIT 协议开源的 C++ 运行时反射库

RTTR是一款MIT协议开源的C++运行时反射库,通过编译期生成反射信息实现零运行时开销。它支持类、成员变量、方法、枚举等完整反射功能,采用无侵入设计,仅需少量宏即可为第三方库添加反射能力。RTTR兼容Windows/Linux/macOS平台,支持跨动态库调用,适用于插件系统、序列化、UI自动生成等场景。相比C++原生RTTI和Boost.Reflection,RTTR在性能、易用性和跨库兼容性方面具有明显优势。安装需源码编译,项目集成推荐CMake方式。典型使用包括动态创建对象、读写属性、调用方法等操作

2026-04-08 22:45:02 612

原创 达梦数据库在Linux备份报错 -8003: 缺少本地或者远程归档 解决方案

摘要:在Ubuntu上调试达梦数据库备份时出现错误,主要原因包括未开启归档模式、归档路径配置无效或权限不足。解决方法包括:1) 检查归档状态,确认是否开启;2) 创建归档目录并配置正确路径;3) 验证归档配置生效后重新执行备份。备选方案包括检查权限与目录、使用冷备份(无需开启归档)或检查dmarch.ini配置文件。操作需SYSDBA权限,建议在业务低峰期执行。

2026-04-08 22:30:24 291

原创 UDRefl: 一个基于C++20的高性能动态反射库

UDRefl是一个基于C++20的高性能动态反射库,采用无RTTI/异常的设计,提供运行时灵活访问C++类型结构的能力。核心特性包括极致性能(编译期优化)、完全动态支持、零头文件污染和全面类型支持。该库通过ReflMngr管理器注册类型信息,支持对象创建、成员访问和方法调用等核心操作,适用于插件系统、序列化、脚本绑定等场景。相比其他反射库,UDRefl具有更高性能、更全面的功能支持,但需要C++20编译器。其简洁API和高效实现使其成为需要动态类型操作的中大型项目的理想选择。

2026-04-07 21:54:32 542 1

原创 CMake进阶:库xxx-Config.cmake文件根据版本号匹配不同的版本库

本文介绍了在CMake配置文件中处理版本控制的两种方法:1) 在XXX-Config.cmake中直接使用CMake自动注入的版本变量(XXX_FIND_VERSION等),无需手动定义;2) 提供完整的FindMyLib.cmake模板,展示如何根据用户指定版本匹配不同版本的库文件路径。文章详细说明了版本变量的获取、校验、路径匹配和现代CMake目标导出的完整流程,并给出了包含v1.0/v2.0/v3.0三个版本的实际项目目录结构和配置示例。

2026-04-02 22:52:08 250

原创 银河麒麟V10系统安装vcpkg的方法

本文介绍了在不同架构的银河麒麟系统上安装vcpkg的详细步骤。主要内容包括:1)环境准备与依赖安装,包括查看系统架构、glibc版本和安装基础工具链;2)vcpkg的安装配置,涵盖克隆仓库、运行引导脚本、设置镜像源解决下载问题;3)针对x86_64、ARM64和龙芯架构的系统适配方案,提供完整的命令行操作流程。特别强调了通过清华镜像源解决国内下载慢的问题,并给出了不同架构下的三元组配置方法。最后通过安装fmt库验证vcpkg是否正常工作,为银河麒麟系统上的C++开发提供了便捷的包管理解决方案。

2026-04-02 22:17:15 501

原创 Cocos2d - x: 一款开源跨平台 2D 游戏框架

Cocos2d-x是一款开源跨平台2D游戏引擎,支持C++、Lua和JavaScript开发,适用于iOS、Android、Windows等多平台。其核心架构采用场景-层-精灵模式,包含高效的渲染引擎和物理系统。该引擎以轻量级、高性能著称,支持纹理压缩、对象池等优化技术,并提供热更新功能。知名游戏如《捕鱼达人》《开心消消乐》均基于此引擎开发。安装简便,通过命令行工具可快速创建项目,适合从休闲游戏到商业应用的各类2D开发需求。相比Unity等3D引擎,Cocos2d-x在2D游戏领域更具性能优势,且完全免费开

2026-04-01 22:48:55 738

原创 LeoCAD:一款免费开源的虚拟乐高 CAD 软件

LeoCAD是一款免费开源的乐高建模软件,支持Windows、Linux和macOS系统。它兼容LDraw标准,提供拖拽式界面,适合乐高爱好者和教育使用。软件需配合LDraw零件库使用,支持模型创建、编辑、动画制作及分步指南生成。虽然轻量高效,但在复杂模型处理上可能存在性能瓶颈。作为开源工具,LeoCAD是学习3D建模和跨平台开发的实用选择。

2026-03-29 12:06:27 525

原创 C语言的三大法宝:链表+结构体+函数指针

摘要:本文介绍了C语言中实现高级编程模式的5种核心技术:1. 通过结构体+函数指针模拟面向对象,将数据和方法封装成类;2. 使用侵入式链表实现通用数据结构管理,通过container_of宏反向获取宿主结构体;3. 基于通知链机制实现解耦设计,通过链表管理回调函数实现事件通知;4. 利用表驱动状态机替代复杂switch-case,通过结构体数组描述状态转换;5. 采用模块自注册技术,利用链接器特性实现零耦合的模块初始化。这些技术体现了C语言通过结构体、函数指针和链表等基础元素构建复杂系统的能力。

2026-03-26 22:24:42 411

原创 threepp:移植Three.js 的 C++ 3D图形开发库

threepp是Three.js的C++移植版本,为开发者提供在C++环境中开发3D图形应用的能力。它保留了Three.js的核心API设计理念和3D渲染逻辑,同时适配C++特性如RAII和智能指针。核心优势包括:兼容Three.js的概念(场景、相机、几何体等),降低学习成本;轻量级设计,依赖少;利用C++优化性能;支持OpenGL等硬件加速渲染。主要模块涵盖场景-相机-渲染器架构、几何体与网格、光照系统以及交互控制。安装支持CMake自动集成或手动编译,适合Windows/macOS/Linux平台。相

2026-03-22 22:33:35 477

原创 Linux 下用 VS Code 高效调试(一)

Windows下有VS系列,调试很方便,但是Linux下没有很好的集成开发环境,这也是Linux开发的硬伤;不过随着vscode的推出,Linux开发不在麻烦。大家都知道Linux基本上是用gdb调试,gdb功能强大,但对于大多数开发者来说,纯命令行界面看复杂的嵌套结构、追踪多线程调用栈、频繁跳转源代码,还是有不小的难度。VS Code 可以解决这些问题:把复杂的 GDB 指令转化为可视化的断点、变量监视窗口和调用堆栈树。

2026-03-19 22:25:53 609

原创 Win7系统SHGetKnownFolderPath获取“我的文档”目录失败的解决方案

文章摘要:在Windows系统中使用SHGetKnownFolderPath获取"我的文档"路径时,在Windows 7 SP1上出现失败情况。通过分析发现,可以采用替代方案:先用SHGetFolderPath的CSIDL_PROFILE参数获取用户主目录,再拼接固定文档目录路径。文章提供了C++实现代码示例,展示了如何正确获取用户目录并组合出文档路径。同时介绍了Windows 7中常用用户目录的环境变量和默认路径对应关系,为系统路径获取提供了多种解决方案。

2026-03-18 22:06:58 327

原创 libuv:一个跨平台的C++异步 I/O 库

libuv是一个跨平台异步I/O库,最初为Node.js开发,现已成为独立开源项目。它通过事件循环机制统一管理异步操作,支持网络/文件I/O、定时器、线程池等功能,屏蔽了不同系统底层I/O模型差异。安装方式包括包管理器安装和源码编译,支持Linux/macOS/Windows等平台。文章提供了定时器示例代码和CMake集成方法,并介绍了C++封装项目VLibuv。libuv广泛应用于高性能网络服务、开源项目依赖等场景,是开发跨平台异步程序的重要工具。

2026-03-17 22:04:03 762

原创 dlib: 一个跨平台的 C++ 机器学习 / 数值计算库

摘要:dlib是一个跨平台的C++机器学习库,提供Python绑定,支持人脸检测、特征点提取和识别等功能。本文介绍了dlib的安装方法(源码编译或CMake集成),并提供了完整的人脸识别C++代码示例,包含检测、特征提取和相似度比对流程。文章详细对比了C++与Python API差异,给出性能优化建议(如O3编译优化、GPU加速)。为提高识别准确率,提出了数据预处理、模型优化(CNN检测器)、阈值调优等方案,并介绍了人脸对齐、质量检测等实用技巧。C++版dlib在保持与Python相同功能的同时,具有更高性

2026-03-14 15:54:37 539

原创 ZLMediakit:一款基于 C++11 开发的高性能、跨平台的流媒体服务器框架

ZLMediakit是一款基于C++11开发的高性能跨平台流媒体服务器框架,支持RTSP/RTMP/HLS/HTTP-FLV/WebRTC等多种协议。其核心优势包括:1)采用协程+事件驱动架构,单核可处理万级并发;2)零拷贝传输降低CPU占用;3)支持协议互转、转码、录像等功能;4)提供简洁的HTTP API接口。该框架适用于安防监控、直播推流、音视频点播等场景,相比同类产品具有更低延迟(WebRTC<100ms)和更高性能。支持Linux/Windows/Mac平台,可通过Docker快速部署或源码

2026-03-12 22:37:07 605 1

原创 RTTR库:一款轻量级、跨平台的 C++ 运行时反射库

RTTR是一个轻量级、跨平台的C++运行时反射库,弥补了C++原生缺乏反射机制的不足。它支持动态获取/操作类型信息(类名、成员变量、方法等),无需编译器扩展即可实现类、枚举、继承关系的反射。核心功能包括动态创建对象、访问/修改属性(含私有成员)、调用方法(支持重载)、序列化等。通过注册宏RTTR_REGISTRATION声明反射信息后,可应用于序列化、编辑器开发、脚本绑定等场景。实际案例展示了JSON序列化、重载方法调用、枚举反射等典型用法,特别适合需要灵活操作对象但不愿修改源码的场景。虽然反射操作会带来轻

2026-03-10 22:40:25 467

原创 Qt中mysql和达梦数据库的驱动编译详细步骤

本文详细介绍了在Qt中编译MySQL和达梦数据库驱动的完整流程。内容包括:1) 环境准备(安装Qt源码、MySQL客户端库和达梦数据库);2) Windows和Linux平台下MySQL驱动的编译步骤(修改配置文件、执行qmake/make、安装驱动);3) 达梦数据库驱动的编译方法;4) Qt6中使用CMake方式编译数据库驱动的特殊步骤。文章提供了详细的配置文件修改示例和测试代码,并强调了环境匹配(32/64位一致)和依赖库路径设置的重要性。通过本文指导,开发者可以成功编译并测试Qt中的数据库驱动插件。

2026-03-06 22:31:28 535

原创 fast-cpp-csv-parser:一款最快的csv文件解析库

fast-cpp-csv-parser是一个高性能的C++ CSV解析库,采用纯头文件设计,无外部依赖。该库通过零拷贝设计和异步I/O实现高速解析,支持GB级大文件处理。核心特点包括:自动类型转换、自定义分隔符、引号转义处理、灵活的列映射和丰富的错误定位。使用只需包含csv.h头文件,通过CSVReader模板类即可快速解析数据。典型应用场景包括大数据分析、日志处理等需要高效CSV解析的场合,其多线程设计能显著提升大文件处理速度。需注意该库要求C++11及以上标准,且不支持CSV注释行等边缘特性。

2026-03-04 22:21:41 573

原创 CMake基础: 全局变量CMAKE_POSITION_INDEPENDENT_CODE

本文介绍了CMake中控制位置无关代码(PIC)的全局变量CMAKE_POSITION_INDEPENDENT_CODE。主要内容包括:1)该变量的作用是为构建共享库生成位置无关代码;2)配置方式有全局设置、单目标设置和条件编译三种;3)注意事项指出共享库默认开启PIC,静态库若链接到共享库也需PIC,以及平台差异;4)与BUILD_SHARED_LIBS的关系,后者设为ON时会自动启用PIC。文章为CMake项目中PIC配置提供了实用指导。

2026-03-04 20:54:42 94

原创 Linux常见命令集合(持续更新中...)

本文系统介绍了Linux系统管理的核心知识,包括目录结构解析、环境变量操作、库依赖排查、网络连接监控和权限管理等实用内容。重点讲解了5种解决"库找不到"问题的方法、ss/lsof/netstat网络诊断工具对比、chmod权限设置的符号/数字模式,以及多种进程启动方式。同时详细解析了Linux目录结构标准,对比了/bin、/sbin、/usr/bin等关键目录的区别,并提供了环境变量配置、程序依赖检查等日常运维技巧。文章包含大量实用命令示例和场景化解决方案,是Linux系统管理的实用参考

2026-02-27 23:08:24 318 2

原创 Qt之共享内存类QSharedMemory的使用(二)

摘要:文章分析了Qt的QSharedMemory类在不同操作系统下的使用差异。Windows系统会在进程退出时自动释放共享内存,而Linux系统在进程异常终止时可能残留内存段。针对Linux下强制关闭导致的内存残留问题,建议改用文件锁+PID文件的方案:通过fcntl对PID文件加排他锁,进程崩溃时内核会自动释放锁,避免死锁问题。该方法比共享内存更稳定可靠,能有效处理进程异常退出的情况。文中还提供了实现代码示例,展示了如何利用文件锁机制确保单实例运行。

2026-02-26 22:04:07 948

原创 Qt deleteLater作用及源码分析

Qt中的deleteLater()方法提供了一种安全的对象销毁机制。该方法通过向对象所属线程的事件队列投递一个延迟删除事件,确保对象在当前事件处理完成后才被销毁。相比直接delete,deleteLater()能有效避免在对象处理事件、执行槽函数或跨线程操作时直接删除导致的崩溃问题。核心优势包括:保证当前执行流程安全完成、线程安全操作、自动处理父子对象销毁顺序。但需要注意该方法依赖事件循环,若无事件循环则对象不会被销毁。典型应用场景包括:槽函数中销毁自身、跨线程销毁工作对象、临时对象自动销毁等。Qt官方推荐

2026-02-25 22:35:47 692

原创 tiny-process-library:一个用 C++ 编写的轻量级、跨平台(支持 Windows、Linux、macOS)的进程管理库

本文介绍了跨平台C++库tiny-process-library,它提供了统一的API来简化Windows、Linux和macOS上的外部进程调用。该库支持同步/异步执行命令、捕获输出、设置工作目录和终止进程等核心功能,采用单头文件设计,集成简单。文章详细展示了基础同步执行、异步捕获输出、终止子进程等典型用法,并针对跨平台开发中的命令格式、路径分隔符等差异提供了解决方案。通过这个轻量级库,开发者可以避免直接使用复杂的系统API,快速实现可靠的外部进程调用功能。

2026-02-24 22:10:04 927

原创 CMake进阶:SelectLibraryConfigurations模块

摘要:SelectLibraryConfigurations是CMake内置模块,用于自动处理Debug/Release库配置。它根据构建类型自动选择正确的库版本,并生成标准变量(如<basename>_LIBRARY)。模块会区分多配置(如VS)和单配置(如Makefile)生成器,分别采用"optimized/debug"关键字列表或单一路径的赋值逻辑。使用步骤包括:1)加载模块;2)设置<basename>_LIBRARY_RELEASE/DEBUG变量;3

2026-02-12 21:30:47 770 1

原创 C++中各平台表示Debug的宏

跨平台Debug宏检测方法总结:推荐使用#ifndef NDEBUG作为通用检测方式,兼容所有编译器。MSVC下可用_DEBUG,而GCC/Clang常用DEBUG。标准C的NDEBUG在Release模式下定义,Debug模式下不定义。示例代码展示了如何区分Debug/Release模式输出,其中assert宏也依赖NDEBUG定义。最佳实践是使用#ifndef NDEBUG来编写Debug专用代码。

2026-02-12 21:04:57 232

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题demo

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题,一个示例的dmeo

2024-04-11

浮点数与十六进制转换工具

 在 C/C++中,使用浮点方式存储实数,用两种数据类型来保存浮点数: foat(单精度)和double(双精度)。float在内存中占4字节,double在内存中占8字节。由于占用空间大,double可描述的精度更高。这两种数据类型在内存中同样以十六进制方式存铺,但写大类型有所不同。         整型类型是将十进制转换成二进制保存在内存中,以十六进制方式显示。浮点类型并不是将一个浮点小数直接转换成二进制数保存,而是将浮点小数转换成的二进制码重新编码,再进行存储。C/C++的浮点数是有符号的。         在C/C++中,将浮点数强制转换为整数时,不会采用数学上四舍五人的方式,而是食弃掉小数部分,不会进位。         浮点数的操作不会用到通用寄存器,而是会使用浮点协处理器的浮点寄存器,专门对浮点数进行运算处理。

2024-01-22

C++设计模式例程,工厂模式例子

C++设计模式例程,工厂模式例子,环境是VS2019打开即可运行 工厂模式也是平时我们编程用的比较多的一种行为设计模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。 作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

2024-01-15

高质量 C++编程指南,编程的好书籍

前言......................................................................................................................................6 第 1 章 文件结构....................................................................................................................8 1.1 版权和版本的声明........................................................................................................8 1.2 头文件的结构 ....................................................................................................

2023-12-26

C++模板函数重载规则详解

模板函数重载匹配规则,他规定着,当我们调用一个具有多个重载的模板函数时,该选择哪个函数作为我们的调用对象。与普通函数的重载类似,但是模板属性会增加一些新的规则。 模板函数重载匹配规则可以引用《c++ primer》中的一段话来总结: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例。 候选的函数模板总是可行的,因为模板实参推断会排除任何不可行的模板。 与往常一样,可行函数(模板与非模板)按类型转换 (如果对此调用需要的话)来排序。当然,可以用于函数模板调用的类型转换是非常有限的。 与往常一样,如果恰有一个函数提供比任何其他函数都更好的匹配,则选择此函数。 但是,如果有多个函数提供同样好的匹配,则: 如果同样好的函数中只有一个是非模板函数,则选择此函数。 如果同样好的函数中没有非模板函数,而有多个函数模板,且其中一个模板比其他模板更特例化,则选择此模板。 否则,此调用有歧义。 看着有点不知所以然,我们一条条来看。这里我给整个过程分为三步: 第一步:模板函数重载匹配会将所有可行的重载列为候选函数。 ...

2023-12-26

sscom 串口调试工具

SSCOM串口调试助手是一款串口通讯软件,在这款软件中主要帮助用户在电脑中对串口进行管理和设置;软件能在任意串口中设置参数,并提供数据的接收、发送等操作,让用户能更加方便轻松的对其管理;软件界面简洁,可以通过十六进制的方式来进行数据转换,操作流程十分的方便,上手难度极低,十分好用。 软件特色 1、SSCOM还支持多种发送方式,如单次发送、循环发送、分段发送等; 2、能够满足不同需求场景的使用要求; 3、SSCOM的独立性较高,支持在没有Python等其他软件的环境下使用,更加方便了用户的使用操作。 软件优点 1、在使用SSCOM时,我们只需将串口设备连接到电脑上; 2、并在SSCOM中选择对应的串口号和通讯协议,设置好波特率等参数,即可开始使用; 3、在数据接收时,我们可以进行数据的实时监控和记录,并且支持数据的导出; 4、在数据发送时,我们可以通过简单的设置实现数据的快速发送和测试。

2023-12-20

NetAssist 网络调试工具

NetAssist,就是网络助手,可以模拟网络之间的通信,互相发送消息 网络调试助手是一款用于Android端网络调试的工具,支持TCP,UDP协议,支持机器自带的串口(可能需要root权限)支持多种网络端口的链接,让网络维修人员或者是个人能够更加简单的对网络进行深度的调试,从而让整个网络更加的符合用户在使用上面的需求,如果你需要的话这款自带中文的调试软件能够满足你的需求。 网络调试助手(NetAssist)软件功能 支持TCP Server,TCP Client, UDP 支持机器自带的串口 支持USB转串口 Esp Touch配网 以对话形式显示通信数据,支持同时建立多个连接 16进制格式数据发送

2023-12-20

基于C++CORBA高级编程

全书共22章,系统地介绍了CORBA的基本体系和概念,IDL语义和映射为C++的规则、POA和对象生命周期,CORBA机理和ORB,动态CORBA特性以及CORBA重要的服务程序。本书的独到之处在于它不仅介绍概念及资源,更重要的是讲述超越API的CORBA内部机制

2023-12-13

空空如也

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

TA关注的人

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