在前面的几讲中,我都以较大的篇幅介绍了 C 标准库中的一些重要概念,和相关接口的使用方式。除此之外,标准库中还有一些功能十分明确,使用方式也十分简单的常用接口,这些接口也为日常的 C 应用开发提供了重要支持。因此,在接下来的两讲中,我将围绕这部分内容展开介绍。 今天,我们先来看看标准库中与日期、时间以及实用函数有关的内 […]

2022年10月29日 396点热度 Baimi 阅读全文

这一讲是这门课中关于 C 标准库的最后一讲。通过前面几讲的学习,相信你已经对 C 标准库提供的相关能力有了一个全面的认识。在此基础上,我们便可以使用这些成熟的接口,来更加方便地构建应用程序。这一讲后,在“ C 工程实战篇”的其他篇目中,我会和你一起讨论语言具体功能之外的性能优化、自动化测试、结构化编译等 C 工程化相关 […]

2022年11月17日 538点热度 Baimi 阅读全文

使用 C 语言正确实现的程序可以享受到最高的运行时性能。因此,如何编写具有“最高”执行性能的代码,是每个 C 程序员都在竭尽所能去探索的一个问题。那么,接下来的两讲,我们就来看看,如何编写高质量的 C 代码,来让我们的程序达到最佳的运行状态。 这一讲,我主要会为你介绍四个优化 C 代码的技巧,它们分别是利用高速缓存、利 […]

2022年11月18日 427点热度 Baimi 阅读全文

在上一讲中,我介绍了几个用于编写高性能 C 代码的实用技巧。今天,我们继续聊这个话题,来讨论其他几种常见的 C 代码和程序优化技巧,它们分别是利用循环展开、使用条件传送指令、尾递归调用优化,以及为编译器指定更高的编译优化等级。 技巧五:循环展开(Loop Unrolling) 为了让你更好地理解“循环展开”这个优化技巧 […]

2022年11月19日 527点热度 Baimi 阅读全文

在前面的几讲中,主要介绍了可以为项目编码提速的 C 标准库,以及优化 C 代码的相关技巧。而在接下来的三讲中,我将为你介绍大型 C 项目在工程化协作时需要关注的编码规范、自动化测试和结构化编译。当项目由小变大,参与人数由少变多时,这些便是我们不得不考虑的重要内容。 和一个人参与项目、写代码时的“单打独斗”相比,多人协作 […]

2022年11月29日 352点热度 Baimi 阅读全文

“测试”是每个软件在其开发生命周期(SDLC)中都不可或缺的一个重要阶段。通过对软件进行各种不同类型的测试,我们能够从多个维度验证软件的功能表现,并在出现偏差时及时修正,以确保它们可以按照预期工作。根据实施方式、深入粒度、应用场景及目的等因素的不同,测试可以被分为多种类型。其中,有些测试较为基础和通用,甚至被作为软件开 […]

2022年12月24日 545点热度 Baimi 阅读全文

在之前的课程中,我们曾遇到过很多段示例代码。而这些代码有一个共性,就是它们都十分短小,以至于可以被整理在一个单独的 .c 文件中。并且,通过简短的一行命令,我们就可以同时完成对代码的编译和程序的运行。 但现实情况中的 C 项目却往往没这么简单,动辄成百上千的源文件、各种各样的外部依赖与配置项,这些都让事情变得复杂了起来 […]

2022年12月25日 534点热度 Baimi 阅读全文

在“C 核心语法实现篇”中,通过观察 C 代码被编译后的产物,我们了解了 C 基本语法在机器指令层面的多种具体实现细节。进入“C 工程实战篇”后,通过探索 C 标准库,我们发现了 C 语言为我们提供的更多优秀能力,并同时深入分析了它们的内部实现原理。在此基础之上,通过探讨 C 项目编码规范、代码优化技巧、自动化测试与结 […]

2022年12月26日 536点热度 Baimi 阅读全文