C
文章平均质量分 72
quintin-lee
这个作者很懒,什么都没留下…
展开
-
C语言中的高级元编程
人们的自然反应是用典型的C方式实现:首先创建一个条件数组,然后进行轮询,最后根据轮询的返回值执行特定的代码。对于C程序员来说,或许可以容忍,但如果你来自其他背景,可能会觉得简直不可接受。实现一个类似于C语言的switch语句的控制结构,具有可变数量的条件。实际上,这是可以做到的。注意,我们不得不将宏拆分成两个,以便可以在多个地方重用同一个__COUNTER__的值。)与触发它们的条件更紧密地结合在一起,而不是先列出所有条件,然后再列出所有动作。C语言中的元编程是创造新语言结构的一种艺术,通常通过宏来实现。原创 2024-09-20 20:40:43 · 416 阅读 · 0 评论 -
深入理解 Linux 内核之module_init
initfn是模块的初始化函数,通常由开发者定义。这个宏主要做了两件事:定义一个静态内联函数__inittest:这个函数返回initfn,即开发者定义的初始化函数。调用__initcall:将__inittest注册为一个初始化调用。__initcall宏__initcall。原创 2024-08-05 10:23:42 · 420 阅读 · 0 评论 -
深入了解 PostgreSQL 的优化器:提升查询性能的幕后英雄
查询优化器是数据库管理系统的一个组件,负责决定 SQL 查询的最佳执行计划。一个查询可以有多种执行方式,而优化器的任务是选择其中代价最小的一个执行计划。执行计划的代价通常取决于执行该查询所需的资源(如 CPU、I/O、内存等)和时间。PostgreSQL 的优化器在查询性能的优化中起到了关键作用。通过理解其工作机制和常见的优化技术,数据库管理员和开发者可以更好地利用优化器的能力,提升数据库系统的性能。同时,合理的数据库设计、索引使用、统计信息维护,以及查询优化实践,也是确保优化器发挥最大作用的重要因素。原创 2024-08-06 10:20:38 · 573 阅读 · 0 评论 -
Proteus 8.1 51单片机仿真双人对战五子棋
黑白双方循环落子,黑方先下,通过上下左右四个按键选择落子位置,按下确定按键即可将棋子放置在棋盘上。当有一方连成5子或棋盘落满棋子,游戏结束,判定双方胜负。按下悔棋按键可以悔棋,每按一次可以悔棋一步,可以无限悔棋,按下重新开始按键,游戏重新开始。内存需求较大,51单片机无法满足,因此需要扩展内存。Proteus需添加240X320的彩色液晶。1、通过按键选择下棋位置。原创 2016-11-17 14:30:39 · 3676 阅读 · 9 评论 -
C 语言之泛型编程
泛型编程是一种编程范式,旨在编写与特定数据类型无关的代码,从而提高代码的复用性和灵活性。在 C++ 中,模板提供了直接支持泛型编程的语法。而在 C 中,C11 标准的新特性使我们能够实现类似的功能。C11 标准的新特性,特别是 _Generic 关键字,使得在 C 语言中实现泛型编程变得更加容易。通过结合使用宏定义、void* 和 _Generic,我们可以编写出与特定数据类型无关的代码,从而提高代码的复用性和灵活性。希望这篇博客能帮助您理解如何在 C11 中实现泛型编程。原创 2024-06-16 18:49:02 · 546 阅读 · 0 评论 -
C 语言之面向对象编程
面向对象编程是一种编程范式,它通过“类”和“对象”来组织代码。类(Class):一种数据结构,用于定义对象的属性和行为。对象(Object):类的实例。继承(Inheritance):一个类可以继承另一个类的属性和行为。多态(Polymorphism):不同类的对象可以通过相同的接口调用不同的方法。虽然 C 语言不是面向对象的编程语言,但通过使用结构体、函数指针和一些编程技巧,我们可以在 C 中实现面向对象编程的概念。通过以上示例,我们展示了如何在 C 中模拟类、对象、继承和多态性。原创 2024-06-16 18:34:02 · 358 阅读 · 0 评论 -
C 语言之分支预测优化
分支预测是处理器在遇到条件分支指令(如 if-else 语句)时,预先猜测分支方向的一种机制。处理器通过预测分支的执行路径,可以减少流水线的停顿,提升指令执行效率。如果预测正确,指令流水线能够连续执行;如果预测错误,则需要清空流水线并重新加载指令,导致性能损失。分支预测的影响因素分支方向:处理器更擅长预测某些方向的分支,如“往前跳转”或“往后跳转”。分支历史:现代处理器使用历史信息来预测分支,如二级分支预测器。分支频率:高频分支预测错误的代价更大。原创 2024-06-13 16:26:44 · 322 阅读 · 0 评论 -
C 语言之 Duff’s Device
Duff's device 是一种优化循环展开技术,用于提高数据复制或处理的效率。由 Tom Duff 在 1983 年提出,主要通过将循环展开和 switch-case 语句结合,减少循环控制的开销。原创 2024-06-13 15:54:31 · 415 阅读 · 0 评论 -
C语言中 typedef常用方法
typedef 的作用是给已知的数据类型命名别名,因为有时使用别名更方便,语义更清晰。1. 复杂的数据类型名称简化 typedef 的典型应用就是可以用一个较为简短的别名去表示一个复杂数据类型 。例如,如果程序需要一个如下形式的函数指针类型void (*)(int, int); 并且程序中还需要定义较多这种类型的指针变量,那么每定义一个变量就写一遍这个类型,不仅麻烦而...原创 2018-07-14 12:12:20 · 4251 阅读 · 0 评论 -
C 语言实现智能指针
attribute((cleanup(f)) 是 GCC 提供的一个强大特性,可以显著简化 C 语言中的资源管理工作。通过定义清理函数并修饰变量,我们可以确保在变量的作用域结束时自动执行清理操作,减少资源泄漏的风险。这一特性在内存管理、文件操作和多线程编程等场景中都具有广泛的应用价值。原创 2017-11-21 09:23:17 · 3859 阅读 · 2 评论