首页 程序笔记 有哪些C/C++的开源项目可以给系统的学习C/C++语言做参考呢?

有哪些C/C++的开源项目可以给系统的学习C/C++语言做参考呢?

前言

看开源项目的源码是学习一门编程语言非常快捷且行之有效的方法。Github提供了很多优质的开源项目,在这些项目中,我们可以学习全球的优秀程序员的编码方式和思维,学习并借鉴他们的程序设计模式。还能够从这些项目中得到一些灵感,用于实战项目中,让我们从书本的理论知识中走出来,走向贴近实际场景的项目,还可以让我们的技术得到升华可提炼,从一个普通C++程序员进阶到一个高阶C++程序员。接下来给大家介绍几个优质的C/C++开源项目。

interview(面试基础)

  • 地址:https://github.com/huihut/interview
  • Star:25.8k(截止2022年9月18日)
  • C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识和面试经验。这是一个比较适合初学者的C++项目,沉淀了面试过程中C++相关的一些问题和解答,这些知识相对于书本上的内容,更加贴合项目实战,往往都是实际项目中会遇到的一些问题。
  • 因此,这个项目可以让我们脱离书籍和教程,学到很多有实战价值的C++知识和技巧。

calculator

  • 地址:https://github.com/microsoft/calculator
  • Star:25.6k(截止2022年9月18日)
  • calculator是一个用C++编写的在Windows中运行的计算器,预装在Windows中。也就是我们在Windows操作系统中使用的那个计算器。这个程序提供了标准、科学和程序员计算器的功能,以及一组各种测量单位和货币之间的转换器。微软将这个计算器程序开源到了GitHub。

zeal

  • 地址:https://github.com/zealdocs/zeal
  • Star:9.8k(截止2022年9月18日)
  • zeal是一款用C++语言开发的离线文档浏览和阅读工具,这个项目涉及到Qt、cmake、libarchive、SQLite等工具和库的用法。有需要学习这几种工具的程序员可以看一下这个项目的源码。

DearPyGui

  • 地址:https://github.com/hoffstadt/DearPyGui
  • Star:8.7k(截止2022年9月18日)
  • DearPYGui一款用C++开发的易于使用、动态、GPU加速、跨平台的Python图形用户界面工具包(GUI)。功能包括传统的GUI元素,如按钮、单选按钮、菜单和创建功能布局的各种方法。此外,它具有令人难以置信的动态绘图、表格、图形、调试器和多个资源查看器。非常适合于创建简单的用户界面以及开发复杂且要求苛刻的图形界面。为开发科学、工程、游戏、数据科学和其他需要快速交互界面的应用程序提供了坚实的框架。这个项目中,可以学习如何使用C++实现UI界面,进行图形图像的开发。

MyTinySTL

  • 地址:https://github.com/Alinshans/MyTinySTL
  • Star:7.1k(截止2022年9月18日)
  • STL是C++中很重要的组成部分,是学习C++无法绕开的库。MyTinySTL通过简单的示例代码,配以详细的注释介绍,让初学者更加清楚STL的用法。对于刚学完C++基础知识想要夯实基础的同学非常有价值。

devilutionX

  • 地址:https://github.com/diasurgical/devilutionX
  • Star:6k(截止2022年9月18日)
  • devilutionX是《地狱之火》和《暗黑破坏神》两款游戏的源码移植,它尝试使游戏的运行变得更简单,同时提供引擎改进、错误修复和一些可选的生活质量特征。想用C++做游戏开发可以看看这个项目。

OpenTTD

  • 地址:https://github.com/OpenTTD/OpenTTD
  • Star:4.3k(截止2022年9月18日)
  • OpenTTD是一款运输模拟游戏,基于Chris Sawyer编写的流行游戏Transport Tycoon Deluxe。它试图尽可能地模仿原来的游戏,同时用新的功能来扩展它。OpenTTD采用GNU通用公共许可证2.0版,但包括一些采用不同许可证的第三方软件。

Clementine

  • 地址:https://github.com/clementine-player/Clementine
  • Star:3.3k(截止2022年9月18日)
  • Clementine是一款适用于Windows、Linux和macOS的现代音乐播放器和资料库组织工具。通过这个项目,可以学习如何通过C++处理音频文件,以及实现文件的组织与管理。

tinytetris

  • 地址:https://github.com/taylorconor/tinytetris
  • Star:1.9k(截止2022年9月18日)
  • 这是一个利用C++实现的俄罗斯方块游戏的项目,相对于大型项目,这个项目对初学者来说比较轻松,而且把C++和经典的游戏开发有机的结合到一起,这会让学习者有更加直观的感受,也有更加强烈的代入感,能够把学习者的注意力吸引到程序的设计过程中。例如,如何显示方块图像,如何实现方块的移动和旋转,如何实现消除和积分功能等。这些问题都可以在这个项目中都可以找到答案。

Cytopia

  • 地址:https://github.com/CytopiaTeam/Cytopia
  • Star:1.5k(截止2022年9月18日)
  • Cytopia是一个免费的、开源的复古像素艺术城市建设游戏,它采用了基于SDL2的自定义等距渲染引擎。在这个项目中涉及到游戏开发中的很多关键因素,例如,渲染引擎、UI系统、摄像机平移缩放、地形操作、声音效果等等。这是一个比较完整且丰富的开源项目,对游戏开发感兴趣的同学可以深入学习一下。

结语

这里共介绍了10个开源项目,涉及到面试基础,实战知识,游戏开发,用户界面(GUI),游戏开发,媒体播放,文档工具。有些比较适合初学者,有些适合C++进阶,大家可以根据自己实际情况选择适合的项目进行学习。

4

站心网

前言 看开源项目的源码是学习一门编程语言非常快捷且行之有效的方法。Github提供了很多优质的开源项目,在..

为您推荐

语言之争与读书有感

移动互联网无处不在的今天,不同的学习方式让我们受益颇多。有人喜欢通过手机阅读各类技术专家的公众号分享;有人喜欢通过逛逛不同的博客,来了解当前时下的技术;也有人喜欢通过社区的形式,跟优秀的导师们一起梳理..

成功运作一个开源项目的 15 个要点

运作开源项目很容易。所有你需要做的就是让你的源代码可用和开源,对吧?嗯,也许。其实,开源项目是否成功取决于你对项目成功的定义。且不论你是怎么定义的,创建开源项目需要大量的工作。如果你已经有了目标,那么..

详解:订单履约系统规划

大家好,我是汤师爷~什么是订单履约系统?订单履约是从消费者下单支付到收到商品的全流程管理过程,包括订单接收、订单派单、库存分配、仓储管理和物流配送等环节,核心目标是确保商品准时、准确地送达消费者手中。..

NETworkManager 一个基于.NET的开源网络管理和问题排查工具

NETworkManager 是一个基于.NET开源(GPL-3.0 license)、免费、功能强大的开源工具,旨在帮助用户管理和解决网络问题。通过提供一系列网络连接和管理工具,NETworkManager 能够让用户轻松连接到远程系统,管理网络..

2025年编程语言需求排行榜

随着技术的不断进步和市场需求的变化,2025年,哪些编程语言将成为企业的首选?在全球,由于技术短缺、人口变化以及对新技能的需求,编程语言的选择和需求也在迅速变化。本文将为您揭示未来最受企业青睐的编程语言,..

基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础

LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.文档地址:https://liningit.github.io/LnskyDB/开源地址:https://github.com/liningit/Ln..

BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架

BotSharp 是一个开源的、基于 .NET 平台的 AI 聊天机器人框架,旨在简化构建智能对话系统的过程。它主要通过自然语言处理(NLP)技术,帮助开发者构建具备语言理解和对话能力的应用。BotSharp 提供了丰富的功能和扩..

ABP.Net Core使用教程(一)启动模版项目

只需要简单的3步:1,到官网下载模版项目 https://aspnetboilerplate.com/Templates2,用VS2017打开,将Web.Host设置为启动项3,在程序包管理器控制台(Nuget控制台)里设定默认项目为EntityFrameworkCore,执行命令..

从程序媛角度去看项目管理

需求管理下图描述的是程序员从接到需求到开发环节的过程:一般我们首先会收到产品的PRD或交互稿,被询问今天什么时间点是否有空,进行需求评审。时光匆匆,回想起刚毕业那时,我望着冗长的PRD,直接跳过背景、目的等..

小米开源智能家居平台 ha_xiaomi_home 使用示例

小米近期在 GitHub 上开源了名为“ha_xiaomi_home”的项目,即 Home Assistant 米家集成组件。该组件由小米官方支持,旨在让用户在 Home Assistant 中集成和控制小米 IoT 智能设备。主要特点:官方支持:..

多语言网站数据库文章表设计

设计一个支持多语言的网站数据库时,应该确保内容能够方便地扩展和管理。以下是多语言数据库表设计的关键原则和示例:设计原则分离内容与语言:将与语言相关的内容独立存储,不直接硬编码到主要表中。每个支持多语言..

ASP.NET如何将Views文件夹从项目分离

将 Views 文件夹从 ASP.NET 项目中分离是一个常见需求,比如为了实现模块化或分层架构。以下是实现此功能的完整步骤,从项目中分离 Views 文件夹,将其移到另一个独立的文件夹或项目中,并确保视图渲染仍然正常。1. ..

.NET开源ORM FreeSql常见问题和解决方法

FreeSql 是一个功能强大的 .NET 开源 ORM(对象关系映射)工具,支持多种数据库类型并提供丰富的功能特性。以下是使用 FreeSql 过程中常见的问题及其解决方法:1. 数据库连接问题问题描述:无法连接数据库,报错提示..

分享5个开源的.NET Excel读写操作库

本文给大家分享 5 个开源的 .NET Excel 读写操作库,它们广泛用于处理 Excel 文件,包括读取、写入、导入和导出数据。1. EPPlus简介:EPPlus 是功能强大的 .NET 库,用于创建和读取 Excel 文件(.xlsx 和 .xlsm 格式..

.NET9 Blazor有哪些更新?

.NET 9 在 Blazor 中引入了多项更新,增强了开发体验和应用性能。以下是主要更新内容:1. 新的 Blazor 混合应用模板.NET 9 引入了一个支持 .NET MAUI 和 Blazor Web 客户端的混合应用模板。开发者可以利用该模板在共..

.NET 游戏开发框架有哪些?

在游戏开发领域,.NET 框架因其强大的功能和灵活性而广受欢迎。对于希望使用 .NET 进行游戏开发的开发者来说,了解可用的框架是至关重要的。以下是一些流行的 .NET 游戏开发框架:1. Unity: 尽管 Unity 主要使用 C# ..

Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库

Sylvan.Data.Excel是一个开源、免费、跨平台的.NET库,专注于读取和写入Excel数据文件。支持多种文件格式,并提供高效的数据访问和数据绑定功能。该库在.NET生态系统中是读取Excel数据文件的最快且内存分配最低的库..

Tesseractjs 前端OCR识别提取图像文本字符工具 支持 100+ 种语言

Tesseract.js 简介Tesseract.js 是一个基于 Tesseract OCR 引擎的开源 JavaScript 库,用于在浏览器和 Node.js 环境中执行光学字符识别 (OCR)。它的特点是无需依赖服务器端支持,完全在客户端执行 OCR 操作。Tessera..

使用shields.io来实时显示GitHub项目star、watch和fork的数量

如何获取GitHub repo实时的star,watch和fork数量呢?这里推荐一个Shields.io工具,可以实时生成GitHub徽章,同时显示star数。显示效果如下:什么是 Shields.io?Shields.io 是一个开源项目,用于生成各种类型的徽章..

.NET 开源 ORM FreeSql 使用教程

什么是 FreeSql?FreeSql 是一个高性能、灵活且易用的 .NET 开源 ORM(对象关系映射工具),提供数据库操作的强大功能,包括实体类映射、链式查询、表达式树支持、数据库迁移等。它可以帮助开发者快速、高效地操作数..

发表回复

返回顶部