对代码进行单元测试是几乎每个软件工程师都要完成的工作。本文以C++语言为基础,讲解如何进行单元测试并生成测试报告。前言测试是软件开发过程中一个必须的环节,测试确保软件的质量符合预期。对于工程师自己来说,单元测试也是提升自信心的一种方式。直接交付没有经过测试的代码是不太好的,因为这很可能会浪费整个团队的时间,在一些原本早期就可以发现的问题上。而单元测试,就是发 …
程序员的编程之路不是任何人都能走过来的,其过程漫长而枯燥,因此程序员不得不借助各种工具来设计、构造、编辑程序,随着科技的不断发展与前进,很多好用的软件开发工具层出不断,下面为大家扒一扒CC++ 编程有哪些值得推荐的工具。软件一 文本对比工具文本对比工具最为好用的是Beyond Compare,无论是想要与版本控制系统合并代码,还是仅仅想要比较两份源代码文件的 …
引言在软件开发的世界里,灵活性和可扩展性是衡量代码质量的重要标准。我们经常需要编写能够适应未来变化、能够轻松集成新功能、能够与各种组件协同工作的程序。而回调函数,作为一种强大的设计模式,正是实现这些目标的关键技术之一。无论是在面向过程的 C 语言,还是在面向对象的 C++ 语言中,回调函数都扮演着至关重要的角色。本文将以资深开发者的视角,深入探讨 C 和 C …
开源安全基金会(OpenSSF)最佳实践工作组 | 2025年3月28日在当今高度互联的数字世界中,软件安全问题从未像现在这样紧迫。特别是使用C和C++这类系统级语言开发的应用程序,因其直接操作内存的特性,时常暴露出缓冲区溢出、空指针解引用和释放后使用等一系列内存安全问题。微软和Chrome团队的统计显示,这类问题长期占据所有安全漏洞的70%比例。虽然业界已 …
我经常会收到很多私信,其中很大一部分都是关于C++就业的问题。比如C++就业都有哪些方向?犹豫要不要学习C++的,C++卷不卷之类的?当然还有很多稀奇古怪的问题。C++能用来干什么?C++语言是一种混合型语言,它保留了C语言所有的优点,同时又增添了面向对象的编程机制,我们可以将C++语言视为C语言的改进和扩展.基于C语言开发的C++语言兼容C语言,因此用C语 …
xv6 是一个用于教育目的的简单 Unix 操作系统,基于 Unix 第六版(Version 6, V6)开发,运行在 RISC-V 处理器上。它由麻省理工学院(MIT)开发,用于操作系统课程(Operating System Engineering[1])教学,帮助学生理解操作系统的基本概念和实现原理。最近我突发奇想,想再研究一遍操作系统 xv6 。当即打 …
上次写了这篇《基于 Kotlin KMP 实现 HarmonyOS 与 Android 双平台 SDK 开发实践》,但是当时有个遗憾, Kotlin KMP 项目除了 Android 平台,在IOS 和鸿蒙端两个端没法直接做断点调试。此前在另外两个端调试,一直是通过打印 log 来进行。但是要是遇到在主线程高频的操作,在其逻辑块中打印日志简直是酸爽。后来找资 …
一、指针的本质:内存的直接操控指针是C语言中最为核心且独特的机制,它赋予了程序员直接操作内存的能力。在高级语言普遍依赖抽象内存模型的今天,指针的存在使C语言保持了与硬件架构的高度一致性。要理解指针的本质,需从计算机内存的基本结构入手。1.1 内存地址与值的二元性现代计算机的内存可视为由连续字节构成的线性空间,每个字节对应唯一的地址(Address)。地址的本 …
结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存,因此必须在定义结构体并实例化后才能使用结构体的字段。 实例化就是根据结构体定义的格式创建一份与格式一致的内存区域,结构体实例与实例间的内存是完全独立的。 Go语言可以通过多种方式实例化结构体,根据实际需要可以选用不同的写法。基本的实例化形式结构体本身是一种类型,可以像整型、字符串等 …
15.1 IIC控制器说明(硬件部分)在14 玩转STM32之IIC通信(软件模拟篇)我们讲了软件模拟的方式,本章讲解芯片自带的硬件部分(并非所有的芯片都含有IIC,像51系列的是没有的,但是绝大多数是有的,根据我用过的S32、STM32、HC32、CH32、GD32都是有的,目前我只见过51的没有、STM8也有这个可能分系列吧,我用的有,其他的不清楚)15 …