└── README.md
/README.md:
--------------------------------------------------------------------------------
1 | # C 语言资源大全中文版
2 | 我想很多程序员应该记得 GitHub 上有一个 Awesome:XXX 系列的资源整理。[awesome-c](https://notabug.org/koz.ross/awesome-c) 是 koz.ross 发起维护的 C 语言资源列表,内容包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等等。
3 |
4 | Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。
5 |
6 | * * *
7 |
8 | ### 我们要做什么?
9 |
10 | - 基于 awesome-c 列表,我们将对其中的各个资源项进行编译整理。此外还将从其他来源补充好资源。
11 | - 整理后的内容,将收录在[伯乐在线资源频道](http://hao.importnew.com/)。可参考已整理的内容:
12 | - 《[libPhenom:Facebook开源的高性能C语言并发编程框架](http://hao.importnew.com/libphenom/)》
13 |
14 | * * *
15 |
16 | ### 如何参与本项目?
17 |
18 |
26 |
27 | * * *
28 |
29 | ### 如何为列表贡献新资源?
30 |
31 | 欢迎大家为列表贡献高质量的新资源,提交PR时请参照以下要求:
32 |
33 | * 请确保推荐的资源自己使用过
34 | * 提交PR时请注明推荐理由
35 |
36 | 资源列表管理收到PR请求后,会定期(每周)在微博转发本周提交的PR列表,并在微博上面听取使用过这些资源的意见。确认通过后,会加入资源大全。
37 |
38 | 感谢您的贡献!
39 |
40 | * * *
41 |
42 | ### 本项目的参与者
43 |
44 | - 维护者:
45 | - 贡献者:[Yonah潇](http://www.importnew.com/members/Yonah/)、[骷髅](http://www.importnew.com/members/lighter_cd/)、[贺贺](http://www.importnew.com/members/jianghehe/)、[beyondwu](http://www.importnew.com/members/beyondwu/)、[Huang Lin](https://github.com/MiterV1)、[Anloper](https://github.com/Anloper)、[冰斌](http://www.importnew.com/members/libing1209/)
46 |
47 | 注:名单不分排名,不定期补充更新
48 |
49 | * * *
50 |
51 |
60 |
61 | ## 目录
62 | * [构建系统](#build-systems)
63 | * [编译器](#compilers)
64 | * [加密](#crypto)
65 | * [数据库](#database)
66 | * [文档生成](#documentation-generation)
67 | * [编辑器](#editors)
68 | * [环境](#environments)
69 | * [框架](#frameworks)
70 | * [游戏编程](#game-programming)
71 | * [引擎](#engines)
72 | * [资源](#resources)
73 | * [通用编程](#generic-programming)
74 | * [图形](#graphics)
75 | * [GUI](#gui)
76 | * [JSON](#json)
77 | * [学习、参考和指南](#learning-reference-and-tutorials)
78 | * [在线资源](#online)
79 | * [参考](#reference)
80 | * [初级](#beginner)
81 | * [中级](#intermediate)
82 | * [高级](#advanced)
83 | * [自学资源](#self-study-courses)
84 | * [实体书](#physical)
85 | * [参考](#reference-1)
86 | * [初级](#beginner-1)
87 | * [中级](#intermediate-1)
88 | * [高级](#advanced-1)
89 | * [多媒体](#multimedia)
90 | * [网络编程](#networking-and-internet)
91 | * [Web 框架](#web-frameworks)
92 | * [数值计算](#numerical)
93 | * [并行编程](#parallel-programming)
94 | * [正则表达式](#regex)
95 | * [序列化](#serialization)
96 | * [源码集锦](#source-code-collections)
97 | * [标准库](#standard-libraries)
98 | * [字符串处理](#string-manipulation)
99 | * [测试工具](#testing)
100 | * [文本编辑器扩展](#text-editor-extensions)
101 | * [Emacs](#emacs)
102 | * [Vim](#vim)
103 | * [工具](#tools)
104 | * [其他工具](#utilities)
105 | * [XML](#xml)
106 | * [其他资源](#resources-2)
107 | * [有影响力的书](#influential-books)
108 | * [知名网站/博客](#websites-blogs)
109 | * [微信公众号](#weibo-weixin)
110 |
111 |
构建系统
112 |
113 | 下面是一些 C 项目的自动化构建和测试工具。
114 |
115 | * aimake:一个被设计来避免复杂配置的构建工具。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://nethack4.org/projects/aimake/)
116 | * Autoconf:一个可扩展的 M4 宏指令包,提供命令行脚本来自动配置软件源码包,是 Autotools 的一部分。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/autoconf/)
117 | * Automake:一个自动生成符合 GNU 代码标准的 Makefile.in 文件的工具。需要与 Autoconf 配合使用,它也是 Autotools 的一部分。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/automake/automake.html)
118 | * Jam:一个构建系统,它被设计的比make更加易用。隐式地理解 C 的构建规则。[Jam License](https://en.wikipedia.org/wiki/Perforce_Jam#License)。[官网](https://www.perforce.com/resources/documentation/jam)
119 | * Libtool:一个通用库支持脚本,是 Autotools 的一部分。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/libtool/)
120 | * Meson:一个非常快,用户友好的构建系统,基于 Ninja。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](http://mesonbuild.com/)
121 |
122 | 编译器
123 |
124 | * Clang:一个基于 LLVM 的 C 的编译器,支持 C11 标准。[NCSA](http://directory.fsf.org/wiki/License:IllinoisNCSA)。[官网](http://clang.llvm.org/)
125 | * CompCert:一个经过充分验证的 C 编译器。支持几乎所有的 C89 标准。[GNU GPL2.1](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://github.com/AbsInt/CompCert)
126 | * GCC:在它的编译器集合中提供了 C 编译器。支持 C11 和 OpenMP 的标准。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gcc.gnu.org/)
127 | * PCC:一个值得尊敬的 C 编译器,支持 C99 标准。[Various licenses](http://pcc.ludd.ltu.se/licenses/),完全免费。[官网](http://pcc.ludd.ltu.se/)
128 | * TCC:一个迷你,速度快的 C 编译器,支持 C99(除了复杂的类型)。 [LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://bellard.org/tcc/)
129 |
130 | 加密
131 |
132 | * GnuTLS:一个安全通信库,实现了 SSL,TLS 和 DTLS。[GNU GPL2.1](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://www.gnutls.org/)
133 | * libgcrypt:一个通用的密码库,支持多种加密方法。 [GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) (代码),[GNU GPL2.1](http://www.gnu.org/licenses/gpl.html) 或更高版本(说明书和工具)。[官网](https://www.gnu.org/software/libgcrypt/)
134 | * OpenSSL:一个 SSL 和 TLS 协议的实现,还包括一个加密库。[Dual Licensed under the OpenSSL License and the SSLeay License](https://www.openssl.org/source/license.html)。[官网](https://www.openssl.org/)
135 | * libsodium:一个现代,易用的加密库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/jedisct1/libsodium)
136 | * libtomcrypt:一个相当全面,模块化和可移植的工具集。公开领域。[官网](https://github.com/libtom/libtomcrypt)
137 | * mbed TLS:一个 C 实现的加密库。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://tls.mbed.org/)
138 |
139 | 数据库
140 |
141 | 下面列出了基于 C API 的数据库和数据存储
142 |
143 | * BerkeleyDB:一个高性能的嵌入式键值对数据库。[GNU AGPLv3](https://gnu.org/licenses/agpl.html)。[官网](http://www.oracle.com/us/products/database/berkeley-db/overview/index.html)
144 | * Hiredis:一个极简的 Redis 客户端。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/redis/hiredis)
145 | * LMDB:一个极快,极简的嵌入式键值对数据存储系统。[newOpenLDAP](http://directory.fsf.org/wiki/License:OpenLDAPv2.7)。[官网](http://symas.com/mdb/)
146 | * MariaDB:一个强壮,可扩展和可靠的 SQL 服务器,设计来作为 MySQL 的替代品。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://mariadb.com/)
147 | * mongo-c-driver:一个高性能的 MongoDB 客户端。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0).[官网](https://github.com/mongodb/mongo-c-driver)
148 | * PostgreSQL:一个强大的对象关系数据库系统。[PostgreSQL licence](http://opensource.org/licenses/postgresql)。[官网](http://www.postgresql.org/)
149 | * recutils:一个工具和 C 库的集合,用于访问可编辑,纯文本的名为 recfiles 的数据库文件。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/recutils/)
150 | * Redis:一个先进的键值对存储系统。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://redis.io/)
151 | * sophia:一个现代,可嵌入的键值对数据库。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/pmwkaa/sophia)
152 | * SQLite:一个自包含,无服务器,零配置,支持事务的 SQL 数据库引擎,包括 C 接口。公开领域。[官网](http://www.sqlite.org/)
153 | * UnQLite:一个自包含,无服务器,零配置,支持事务的 NoSQL 数据库引擎,包括 C 接口。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://unqlite.org/)
154 |
155 | 文档生成
156 |
157 | * Cxref:生成 C 程序的文档,支持 LaTeX,HTML, RTF 或者 SGML 的格式。[GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)[官网](http://www.gedanken.org.uk/software/cxref/)
158 | * DocOnce:一种朴素的标签标记语言,可以用来生成多种格式的文档。[BSD-3clause](http://directory.fsf.org/wiki/License:BSD_3Clause).[官网](https://hplgit.github.io/doconce/doc/web/index.html)
159 | * Doxygen:一个事实上的标准工具,用于从注释的代码中生成 C 文档。能够生成多种格式的文档。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.stack.nl/~dimitri/doxygen/index.html)
160 | * GTK-Doc:一个从注释的代码中生成 C 文档的工具,支持 Autotools [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)(代码), [GNU FDL1.1](https://www.gnu.org/licenses/old-licenses/fdl-1.1.html)。[官网](http://www.gtk.org/gtk-doc/)
161 |
162 | 编辑器
163 |
164 | 这些是特别精致,IDE 类型的编辑器。如果你想要一个程序员的文本编辑器,看别的地方。此外,不管你选择哪一款编辑器,它都支持 C。
165 |
166 | * Anjuta DevStudio:GNOME IDE。 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://anjuta.org/)
167 | * Code::Blocks:一个可扩展,可配置的 IDE,支持 C。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](http://www.codeblocks.org/)
168 | * CodeLite:一个跨平台的 IDE。 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.codelite.org/)
169 | * Eclipse:一个用 Java 写成的 IDE。 [EPL](http://directory.fsf.org/wiki/License:EPLv1.0)。[官网](http://www.eclipse.org/ide/)
170 | * Geany:一个很小很快的 IDE。 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)及更高版本。[官网](http://www.geany.org/)
171 | * KDevelop:KDE IDE. [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://www.kdevelop.org/)
172 | * CLion:JetBrains 推出的 C/C++ 跨平台集成开发环境。[官网](https://www.jetbrains.com/clion/)
173 |
174 |
175 | 环境
176 |
177 | 下面列出了被设计来引领 Windows 进入支持 C 的 21 世纪的技术。
178 |
179 | * Cygwin:被设计用于在 Windows 下模拟 POSIX 兼容环境。[Various licenses, all free](https://cygwin.com/licensing.html)。[官网](https://cygwin.com/)
180 | * MinGW-w64:一个 Windows 下极简的 C 开发环境,支持 64 位。[Various licenses, all free](http://mingw.org/license)。[官网](http://mingw-w64.yaxm.org/doku.php/start)
181 |
182 | 框架
183 |
184 | 这一节包括提供数据结构的大型库和你所期待“现代”的标准库。
185 |
186 | * APR:Apache Portable Runtime;另一个跨平台的实用函数库。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](http://apr.apache.org/)
187 | * C Algorithms:一个常用算法和数据结构的集合。[官网](https://github.com/fragglet/c-algorithms)
188 | * CPL:The Common Pipeline Library;一系列详尽,高效和强壮的软件工具包。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.eso.org/sci/software/cpl/)
189 | * EFL:一个大型实用数据结构和函数的的集合。多种许可证,完全免费。[官网](https://www.enlightenment.org/p.php?p=about/efl)
190 | * GLib:一个便携,高效和强大的实用函数和数据结构库。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](https://wiki.gnome.org/Projects/GLib)
191 | * GIO:一个现代和易用的 VFS API。[GNU LGPL2.1]。[官网](https://developer.gnome.org/gio/)
192 | * GObject:一个 C 的面向对象系统和对象模型。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](https://developer.gnome.org/gobject/stable/)
193 | * libnih:一个轻量级的 C 函数和数据结构库。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/keybuk/libnih)
194 | * libU:一个提供基本实用函数的迷你库,包括内存分配,字符串处理和日志功能。[官网](http://www.koanlogic.com/libu/)
195 | * PBL:一个包括实用函数,特色数据结构等的大型库。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)及更高版本(库),[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)及更高版本(测试代码)。[官网](http://www.mission-base.com/peter/source/)
196 | * qlibc:一个简单且强大的 C 库,当我们想要小且轻的库时,可作为 Glib 的替代品。[qLib license](https://github.com/wolkykim/qlibc/blob/master/LICENSE) (类似于 [FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD"))。[官网](https://github.com/wolkykim/qlibc)
197 | * stb:一系列单文件 C 库。公共领域。[官网](https://github.com/nothings/stb)
198 | * [libcstl](http://hao.importnew.com/libcstl/):标准C语言通用数据结构和常用算法库。[官网](http://libcstl.org/)
199 |
200 | 游戏编程
201 |
202 | 引擎
203 |
204 | 这些作为 C 游戏编程代码的例子。
205 |
206 | * [Corange](http://hao.importnew.com/corange/):一个纯 C 的游戏引擎。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/orangeduck/Corange)
207 | * Darkplaces:一个 Quake2 引擎的修改版本。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://icculus.org/twilight/darkplaces/)
208 | * ioquake3:Quake3 引擎,终于免费啦。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/ioquake/ioq3)
209 | * Orx:一个便携,轻量级,插件化,数据驱动,面向 2D 的游戏引擎。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](https://bitbucket.org/orx/orx)
210 | * [Quake2](http://hao.importnew.com/quake2/):Quake2 引擎。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/id-Software/Quake-2)
211 | * Spearmint:一个为 FPS 游戏设计的引擎。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)及更高版本。[官网](https://github.com/zturtleman/spearmint)
212 |
213 | 资源
214 |
215 | 这些是筛选过的,对游戏编程有用的库。
216 |
217 | * Allegro:一个跨平台,视频游戏开发和多媒体库。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](http://liballeg.org)
218 | * Chipmunk2D:一个快且轻量级的 2D 游戏物理库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/slembcke/Chipmunk2D)
219 | * CSFML:一个用 C 封装的 [SFML](http://www.sfml-dev.org/index.php)。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](http://www.sfml-dev.org/download/csfml/)
220 | * FreeGLUT:一个替代性的 OpenGL 实用工具包。允许用 OpenGL 上下文创建和管理窗口。[X11](http://directory.fsf.org/wiki/License:X11)。[官网](https://github.com/dcnieho/FreeGLUT)
221 | * GLFW:一个使用 OpenGL 上下文创建窗口的多平台库。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](http://www.glfw.org/)
222 | * libao:一个有多种输出的跨平台音频库。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)及更高版本。[官网](https://github.com/timonwong/libao)
223 | * RetroArch:[libretro](http://www.libretro.com/) 的参考前端。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](https://github.com/libretro/RetroArch)
224 | * SDL:一个跨平台库,通过 OpenGL 提供音频,键盘,鼠标,操纵杆和图形硬件的底层访问。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](https://www.libsdl.org/)
225 | * SDL2:一个跨平台库,通过 OpenGL 提供音频,键盘,鼠标,操纵杆和图形硬件的底层访问。这是最新版本。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](https://www.libsdl.org/)
226 |
227 | 通用编程
228 |
229 | * klib:小且轻量级的常用算法和数据结构实现。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/attractivechaos/klib)
230 |
231 | 图形
232 |
233 | * Cairo:一个 2D 图像库。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 或者 [MPLv1.1](https://directory.fsf.org/wiki/License:MPLv1.1)。[官网](http://cairographics.org/)
234 | * Cogl:一个 GPU 图像和实用 API。[Expat](http://directory.fsf.org/wiki/License:Expat)(依赖使用 [3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause) 许可,库使用 [LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 许可)。[官网](https://github.com/rib/cogl-web/wiki)
235 | * Clutter:一个基于 OpenGL 的 UI 库。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](https://blogs.gnome.org/clutter/get-it/)
236 | * heman:一个迷你图像实用工具库,处理高度图,法线图,距离场等。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/prideout/heman)
237 | * libcaca:一个基于终端接口的 ASCII 渲染器。[WTFPLv2](http://www.wtfpl.net/txt/copying/)。[官网](https://github.com/cacalabs/libcaca)
238 | * libimagequant:小且轻量级的库,用于高质量的从 RGBA 图像到 8 位像素图的转换。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://pngquant.org/lib/)
239 | * libjpeg-turbo:一个更快的读写 JPEG 文件库。[Various licences](http://www.libjpeg-turbo.org/About/License)。[官网](http://libjpeg-turbo.virtualgl.org/)
240 | * libpng:官方 PNG 参考库。[libpng license](http://www.libpng.org/pub/png/src/libpng-LICENSE.txt)。[官网](https://http://www.libpng.org/)
241 | * libxmi:一个光栅化 2D 位图的函数库。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/libxmi/)
242 | * mozjpeg:一个提升 JPEG 图像质量的编码器。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/mozilla/mozjpeg)
243 | * OpenGL:一个高性能图像的工业标准,提供了原生 C语言 绑定。[Various licenses](http://www.sgi.com/tech/opengl/?/license.html)。[官网](https://www.opengl.org/)
244 | * [Craft](http://hao.importnew.com/craft/):一个利用OpenGL使用C编写的简单MineCraft的克隆。[官网](http://www.michaelfogleman.com/craft/)、[GitHub](https://github.com/fogleman/Craft)
245 |
246 | GUI
247 |
248 | 这些具体来说就是[控件工具包](https://en.wikipedia.org/wiki/Widget_toolkit)
249 |
250 | * GTK+:一个跨平台的控件工具包。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://www.gtk.org/)
251 | * IUP:另一个跨平台的控件工具包。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://webserver2.tecgraf.puc-rio.br/iup/)
252 | * Tk:一个基本控件工具包,Tcl/Tk 的一部分。[Tcl/Tk License](http://www.tcl.tk/software/tcltk/license.html)。[官网](http://www.tcl.tk/)
253 | * XForms Toolkit:一个为 XWindow 设计的控件工具包。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://xforms-toolkit.org/)
254 |
255 | JSON
256 |
257 | * Jansson:一个编码,解码和处理 JSON 的 C 库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://www.digip.org/jansson/)
258 | * jsmn:一个极简的 JSON 解析器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://zserge.com/jsmn.html)
259 | * json-c:一个处理 JSON 的库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/json-c/json-c/wiki)
260 | * WJElement:高级 JSON 处理库,支持 JSON Schema。任意版本的 LGPL。[官网](https://github.com/netmail-open/wjelement/)
261 | * YAJL:一个很快的 JSON 流解析 C 库。[ISC](http://directory.fsf.org/wiki/License:ISC)。[官网](https://lloyd.github.io/yajl/)
262 |
263 | 学习、参考和指南
264 |
265 | 下面列出了学习 C 编程的资源,或者跟 C 编程相关的有用的东西。
266 |
267 | ### 在线
268 |
269 | #### 参考
270 |
271 | * [SEI CERT C 编码标准](https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard)
272 | * [C FAQ:comp.lang.c 常见问题](http://c-faq.com/)
273 | * [GNU/Linux 下 C/POSIX 标准库实现的比较](http://www.etalabs.net/compare_libcs.html)
274 | * [C11 标准草案](http://www.open-std.org/JTC1/SC22/WG14/)
275 | * [GNU C 参考手册](https://www.gnu.org/software/gnu-c-manual/)
276 | * [Robert Pike 的 C 笔记](http://kamalatta.ddnss.de/otherdocs/pikestyle.html)
277 |
278 | #### 初级
279 |
280 | * [指针教程](http://home.netcom.com/~tjensen/ptr/pointers.htm)
281 | * [C 语言指针 5 分钟教程](http://blog.importnew.com/25409/)
282 | * [C 语言内存地址基础](http://blog.importnew.com/44845/)
283 | * [C 语言函数指针基础](http://blog.importnew.com/44639/)
284 | * [C 语言指针和数组基础](http://blog.importnew.com/44863/)
285 | * [构建 C 项目](http://nethack4.org/blog/building-c.html)
286 | * [C 编程百科全书](https://en.wikibooks.org/wiki/C_Programming)
287 | * [“有趣”的 C 介绍](https://gist.github.com/eatonphil/21b3d6569f24ad164365)
288 | * [用 GDB 学习 C](https://www.recurse.com/blog/5-learning-c-with-gdb)
289 | * [POSIX 线程编程指南](https://computing.llnl.gov/tutorials/pthreads/) (有点过时,但大部分还是有效和有用的)
290 | * [GNU C 编程指南](http://www.crasseux.com/books/ctut.pdf) (在线 PDF)
291 | * [C 语言中的模板](http://blog.pkh.me/p/20-templating-in-c.html)
292 |
293 |
294 | #### 中级
295 |
296 | * [8 个你应该知道的 GDB 技巧](https://blogs.oracle.com/ksplice/entry/8_gdb_tricks_you_should)
297 | * [10 个 C99 技巧](http://blog.noctua-software.com/c-tricks.html)
298 | * [深入并发:尝试互斥锁和原子操作](http://jvns.ca/blog/2014/12/14/fun-with-threads/)
299 | * [OpenMP 介绍](https://www.youtube.com/playlist?list=PLLX-Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG) (视频)
300 | * [OpenMP 指南](https://computing.llnl.gov/tutorials/openMP/) (针对 OpenMP3 标准)
301 | * [memcpy 与 memmove 的比较](http://www.tedunangst.com/flak/post/memcpy-vs-memmove)
302 | * [MPI 指南](https://computing.llnl.gov/tutorials/mpi/)
303 | * [C 语言中一些未知特性或者技巧](http://proprogramming.org/some-unknown-features-or-tricks-in-c-language/)
304 | * [失落的 C 语言结构体封装艺术](http://blog.importnew.com/57822/)
305 | * [C 程序员需要了解的内存知识](http://marek.vavrusa.com/c/memory/2015/02/20/memory/)
306 | * [每个 C 程序员需要知道的未定义行为知识](http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html)
307 |
308 | #### 高级
309 |
310 | * [C 中的高级元编程](http://250bpm.com/blog:56)
311 | * [一个快速教程:如何实现和调试 malloc,free,calloc,和 realloc](http://danluu.com/malloc-tutorial/)
312 | * [位操作技巧](https://graphics.stanford.edu/~seander/bithacks.html)
313 | * [我不懂 C](http://kukuruku.co/hub/programming/i-do-not-know-c)
314 | * [在 C 语言中实现智能指针](https://snai.pe/c/c-smart-pointers/)
315 | * [C 中的内联函数](http://www.greenend.org.uk/rjk/tech/inline.html)
316 | * [C 中的自定义控制结构元编程](http://www.chiark.greenend.org.uk/~sgtatham/mp/)
317 | * [用 C 的宏解决临时内存问题](http://www.samnip.ps/thought/macro-storage-for-inverse-comma)
318 | * [C 语言中一些不为人知的角落](https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/edit?pli=1#slide=id.gaf50702c_0153)
319 | * [编写高效的 C 和 C 代码优化](http://www.codeproject.com/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization)
320 |
321 | #### 自学教程
322 |
323 | * [C 语言认证协会预备课程](http://www.cppinstitute.org/?page_id=1487)
324 |
325 | ### 实体书
326 |
327 | #### 参考资料
328 |
329 | * [C: A Reference Manual 5E](http://careferencemanual.com/):C99 完全参考手册
330 | * [C Pocket Reference](http://shop.oreilly.com/product/9780596004361.do):C99 简明参考手册
331 | * [The C Programming Language 2E](https://en.wikipedia.org/wiki/The_C_Programming_Language):第一本 C 语言书籍,由 C 的创造者编写。
332 |
333 | #### 初级
334 |
335 | * [C Primer Plus 6E](http://www.pearsonhighered.com/educator/product/C-Primer-Plus-6E/9780321928429.page):一个全面的 C11 编程指南。
336 | * [C Programming: A Modern Approach](http://knking.com/books/c2/index.html):一本极好的学习 C 基础的书。
337 | * [Head First C](http://shop.oreilly.com/product/0636920015482.do):一本“深入浅出”风格的学习 C 的书籍。
338 |
339 | #### 中级
340 |
341 | * [21st Century C](http://shop.oreilly.com/product/0636920033677.do):一本非常好的 C 语言书籍,可作为第二选择。
342 | * [Understanding and Using C Pointers](http://shop.oreilly.com/product/0636920028000.do):一本深入讨论 C 指针的书。
343 | * [ZeroMQ](http://shop.oreilly.com/product/0636920026136.do):一本介绍如何用 C 使用 ZeroMQ 的书。
344 |
345 | #### 高级
346 |
347 | * [Expert C Programming: Deep C Secrets](http://dl.acm.org/citation.cfm?id=179241):一本从有趣,深度和娱乐的视角分析 C 内部结构的书籍。
348 |
349 |
350 |
351 | * FFMPEG:一个完整,跨平台的录音,转换和流化视频以及音频的解决方案。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 或更高版本,部分是 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或更高版本。[官网](https://www.ffmpeg.org/)
352 | * GStreamer:一个声音和可视化媒体的框架。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://gstreamer.freedesktop.org/)
353 | * lodepng:一个简单的 PNG 图像解码器和编码器,不需要其他依赖。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause).[官网](http://lodev.org/lodepng/)
354 |
355 | 网络编程
356 |
357 | * asnlc:一个把 ASN.1 规范转换为 C 代码的编译器。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://lionet.info/asn1c/compiler.html)
358 | * czmq:一个 ZeroMQ 的高级绑定。[官网](https://github.com/zeromq/czmq)
359 | * GNU adns:一个高级,易用,异步的 DNS 客户端和实用工具。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 及更高版本。[官网](https://gnu.org/software/adns/)
360 | * GNU SASL:一个简单身份认证和安全层和一些常见 SASL 机制的实现。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 及更高版本。[官网](https://gnu.org/software/gsasl/)
361 | * GnuTLS:一个安全通信库,实现了 SSL,TLS 和 DTLS。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 及更高版本。[官网](http://www.gnutls.org/)
362 | * gumbo-parser:一个 C99 标准的 HTML5 解析库。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://github.com/google/gumbo-parser)
363 | * http-parser:一个 HTTP 请求回应解析器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/nodejs/http-parser)
364 | * ldns:一个简化 DNS 编程的库。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://www.nlnetlabs.nl/projects/ldns/index.html)
365 | * libcurl:一个客户端的 URL 转换库,支持多种格式。[curl license](http://curl.haxx.se/docs/copyright.html)。[官网](http://curl.haxx.se/libcurl/)
366 | * LibEtPan:一个邮件库,支持 IMAP,SMTP,POP 和 NNTP 网络协议。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/dinhviethoa/libetpan)
367 | * libev:一个事件驱动库。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD").[官网](http://software.schmorp.de/pkg/libev.html)
368 | * [libevent](http://hao.importnew.com/libevent/):一个在网络服务器中事件驱动库的可替代品。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://libevent.org/)
369 | * libgss:通用安全服务。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/gss/)
370 | * libhttpd:一个给应用或嵌入式设备添加基本 Web 服务器功能的库。[GNU GPL2](http://www.gnu.org/licenses/gpl.html)。[官网](http://www.hughes.com.au/products/libhttpd/)
371 | * libhv:一个比libevent、libuv更易用的国产网络库,可用来开发 TCP/UDP/SSL/HTTP/WebSocket 客户端/服务端。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/ithewei/libhv)
372 | * libidn:Stringprep,Punycode 和 IDNA 规范的实现。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/libidn/)
373 | * libmicrohttpd:一个迷你库,可作为其他应用的一部分,让运行 HTTP 服务器变得简单。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 或更高版本。[官网](https://gnu.org/software/libmicrohttpd/)
374 | * libsoup:一个 GNOME HTTP 客户端/服务器库,使用了 GObject。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](https://wiki.gnome.org/action/show/Projects/libsoup?action=show&redirect=LibSoup)
375 | * lwan:一个实验性,可扩展,高性能的 HTTP 服务器。 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/lpereira/lwan)
376 | * [mongoose](http://hao.importnew.com/mongoose/):基于 C 的嵌入式 Web 服务器。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/cesanta/mongoose)
377 | * nanomsg:一个基于 C 的 ZeroMQ 实现。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/nanomsg/nanomsg)
378 | * onion:易于使用的 HTTP 服务器库。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://github.com/davidmoreno/onion)
379 | * OpenSSL:一个 SSL 和 TLS 协议的实现,还包括一个加密库。[Dual Licensed under the OpenSSL License and the SSLeay License](https://www.openssl.org/source/license.html)。[官网](https://www.openssl.org/)
380 | * oSip:一个基于 C 的 SIO 实现,没有额外的依赖。[GNU LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 或更高版本。[官网](https://gnu.org/software/osip/)
381 | * s2n:一个 C99 标准的 TLS/SSL 协议的实现,简单,快并且以安全优先。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://github.com/awslabs/s2n)
382 | * socket99:BSD 套接字 API 的 C99 封装。[ISC](http://directory.fsf.org/wiki/License:ISC)。[官网](https://github.com/silentbicycle/socket99)
383 | * Tox:一个通信平台,被设计为 Skype 杀手。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](https://github.com/irungentoo/toxcore)
384 | * twitc:一个与 Twitter OAuth API 交互的迷你 C 库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/sinemetu1/twitc)
385 |
386 | Web框架
387 |
388 | * balde:一个基于 GLib 的 C 微框架。 [GNU LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](https://github.com/balde/balde)
389 |
390 | 数值计算
391 |
392 | * apophenia:一个用于统计和科学计算的库。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/b-k/apophenia)
393 | * ATLAS:自动调谐线性代数软件。 [3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://math-atlas.sourceforge.net/)
394 | * BLAS:Basic Linear Algebra Subprograms;提供向量和矩阵操作的一系列操作。[BLAS license](http://www.netlib.org/blas/#_licensing)。[官网](http://www.netlib.org/blas/)
395 | * Cuba:一个计算多维的数值积分的库。 [GNU LGPLv3](http://www.gnu.org/licenses/lgpl.html)。[官网](http://www.feynarts.de/cuba/)
396 | * FFTW:The Fastest Fourier Transform in the West;一个高度优化的快速傅立叶变换例程。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或更高版本。[官网](http://www.fftw.org/)
397 | * FLINT:Fast Library for Number Theory;一个支持算数,多项式,幂级数和矩阵等。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或更高版本。[官网](http://flintlib.org/)
398 | * GLPK:GNU Linear Programming Kit;一个求解大规模线性规划,混合整数规划和其他相关问题。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/glpk/)
399 | * GMP:GNU Multple Precision Arithmetic Library;一个支持任意精度计算的库。双重许可 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 和 [GNU LGPLv3](http://www.gnu.org/licenses/lgpl.html)。[官网](https://gmplib.org/)
400 | * GNU MPC:一个支持复杂数字计算的库。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html) 或更高版本。[官网](http://www.multiprecision.org/index.php?prog=mpc&page=home)
401 | * GNU MPFR:一个支持任意精度的浮点数计算库。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html) 或更高版本(大多数最近版本),[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 或更高版本(2.4.x 之前)。[官网](http://mpfr.loria.fr/index.html)
402 | * GNU MPRIA:一个支持多精度合理区间运算的可扩展数学库。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/mpria/)
403 | * GSL:The GNU Scientific Library;一个精确的数值计算库。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](http://www.gnu.org/software/gsl/)
404 | * KISS FFT:一个非常快的傅里叶变换库。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://sourceforge.net/projects/kissfft/)
405 | * LAPACKE:一个 [LAPACK](http://www.netlib.org/lapack/) 的 C 接口。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://www.netlib.org/lapack/lapacke.html)
406 | * PARI/GP:一个数论的计算机代数系统,包括 C 编译器。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或更高版本。[官网](http://pari.math.u-bordeaux.fr/)
407 | * PETSc:一系列数据结构和例程,用于计算由偏微分方程建模的应用程序的可扩展并行解。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://www.mcs.anl.gov/petsc/)
408 | * SLEPc:一个在并行计算机中的解决大型,稀疏特征值问题的软件库。[LGPL3](http://www.gnu.org/licenses/lgpl.html)[官网](http://slepc.upv.es/)
409 | * Yeppp!:非常快,SIMD 优化的数学库。 [3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://www.yeppp.info/)
410 |
411 | 并行编程
412 |
413 | * cchan:一个线程间通信通道构建的小型库。公共领域。[官网](http://repo.hu/projects/cchan/)
414 | * ck:并发原语,安全内存回收机制和非阻塞数据结构。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/concurrencykit/ck)
415 | * mill:用 C 写成的 Go 风格并发。[X11](https://directory.fsf.org/wiki/License:X11)[官网](http://libmill.org/)
416 | * MPICH:MPI 的另一种实现。[MPICH licence](http://git.mpich.org/mpich.git/blob_plain/6aab201f58d71fc97f2c044d250389ba86ac1e3c:/COPYRIGHT)。[官网](http://www.mpich.org/)
417 | * OpenMP:一组 C 编译指令,使其易于并行化代码。标准(许可不适用)。[官网](http://openmp.org/wp/about-openmp/)
418 | * OpenMPI:一个消息传输接口实现。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/open-mpi/ompi)
419 | * PETSc:一系列数据结构和例程,用于计算由偏微分方程建模的应用程序的可扩展并行解。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://www.mcs.anl.gov/petsc/)
420 | * pth:一个非抢占式优先级调度多线程执行的可扩展实现。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或者更高版本。[官网](https://gnu.org/software/pth/)
421 | * pthreads:POSIX 线程库。标准(没有适用的许可)。[官网](https://en.wikipedia.org/wiki/POSIX_Threads)
422 | * SLEPc:一个在并行计算机中的解决大型,稀疏特征值问题的软件库。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html)。[官网](http://slepc.upv.es/)
423 | * TinyCThread:一个可扩展,小型的 C11 标准线程 API 实现。[zlib](http://directory.fsf.org/wiki/License:Zlib)。[官网](https://tinycthread.github.io/)
424 |
425 | 正则表达式
426 |
427 | > 有些人遇到问题时就会想:“啊,我知道了,我可以使用正则表达式”。于是现在他们有了两个问题。- Jamie Zawinski。
428 |
429 | * PCRE:与 Perl 5 正则表达式完全相同的实现。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://www.pcre.org/)
430 | * SLRE:Super Light Regular Expression library;一个 Perl 正则表达式语法子集的迷你实现。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://github.com/cesanta/slre)
431 | * TRE:一个与 POSIX 一致,充满特色的正则表达式库。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/laurikari/tre/)
432 | * PS:关于正则表达式,deerchao 有篇文章不错 《[正则表达式 30 分钟入门教程](http://blog.importnew.com/96708/)》
433 |
434 | 序列化
435 |
436 | * c-capnproto:一个 Cap'n Proto 序列化协议的实现。 [Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/jmckaskill/c-capnproto)
437 | * cmp:一个 [MessagePack](http://msgpack.org/) 序列化协议的实现。 [Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/camgunz/cmp)
438 | * libavro:一个 Avro 数据序列化系统的 C 实现。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](http://avro.apache.org/docs/current/api/c/index.html#_introduction_to_avro_c)
439 | * mpack:另一个 [MessagePack](http://msgpack.org/) 序列化协议的实现。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/ludocode/mpack)
440 | * protobuf-c:一个 Google Protocol Buffer 的 C 实现。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/protobuf-c/protobuf-c)
441 | * xdr:External Data Representation;数据序列化标准。标准(没有可用许可)。[官网](https://en.wikipedia.org/wiki/External_Data_Representation)
442 |
443 | 源码集锦
444 |
445 | 下面包含了一些小型源码集合。如果你想要大型且成熟的,看《框架》那一节。
446 |
447 | * CCAN:模仿 Perl 的 CPAN,这是一个大的实用 C 代码集合。完整的列表在 [这里](http://ccodearchive.net/list.html)。多种许可(所有都是免费软件)。[官网](http://ccodearchive.net/)
448 | * clib:一个 C 软件包管理器,配备了一堆自己的库。 [Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/clibs/clib)
449 | * gnulib:通用 GNU 代码的集合。多种许可证,全部免费。[官网](https://www.gnu.org/software/gnulib/)
450 | * libdjb:做各种事情的库的集合。(显然)公共领域。[官网](http://www.fefe.de/djb/)
451 |
452 | 标准库
453 |
454 | 下面包括了标准 C 库。
455 |
456 | * Bionic:谷歌为 Android 开发的 C 标准库。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/android/platform_bionic)
457 | * dietlibc:标准 C 库,可能是最小的二进制文件。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.fefe.de/dietlibc/)
458 | * glibc:GNU C 库。一个 C 标准库的实现。 [GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://www.gnu.org/software/libc/)
459 | * musl:标准 C 库,兼容 POSIX 2008 和 C11,为静态链接设计。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://www.musl-libc.org/)
460 |
461 | 字符串处理
462 |
463 | * bstrlib:更好的字符串处理库。双重许可,[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause) 或 [GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://bstring.sourceforge.net/)
464 | * ICU:International Components for Unicode;提供 Unicode 支持的库。 [ICU license](http://source.icu-project.org/repos/icu/icu/trunk/license.html)。[官网](http://site.icu-project.org/)
465 | * libunistring:处理 Unicode 字符串的 C 库。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html)。[官网](https://gnu.org/software/libunistring/)
466 | * libgiconv:文本转换库。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)(库),[GNU GPL3](http://www.gnu.org/licenses/gpl.html)(编码转换程序)。[官网](https://gnu.org/software/libiconv/)
467 | * SDS:Simple Dynamic Strings;一个用简单方式处理 C 字符串的库,而且兼容标准 C 字符串函数。可通过 [clib](https://github.com/clibs/clib) 使用。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/antirez/sds)
468 | * shoco:一个小型文本压缩器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/Ed-von-Schleck/shoco)
469 | * smaz:一个高效的字符串压缩库。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause).[官网](https://github.com/Ed-von-Schleck/shoco)
470 |
471 | 测试工具
472 |
473 | * CHEAT:一个非常简单的单元测试框架。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/Tuplanolla/cheat)
474 | * Check:一个 C 的单元测试框架。[GNU LGPL2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://check.sourceforge.net/)
475 | * CMock:一个 C 的 mock/stub 生成器。[官网](https://github.com/ThrowTheSwitch/CMock)
476 | * cmocka:一个支持 mock 对象的单元测试框架。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://cmocka.org/)
477 | * Criterion:一个 KISS 风格,非侵入式的 C 测试框架。[Expat](http://directory.fsf.org/wiki/License:Expat)[官网](https://github.com/Snaipe/Criterion)
478 | * CUnit:另一个 C 的单元测试框架。[GNU LGPL2.0](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://cunit.sourceforge.net/)
479 | * minunit:极小的 C 单元测试框架。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/siu/minunit)
480 | * Unity:一个简单的 C 单元测试框架。 [Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/ThrowTheSwitch/Unity)
481 |
482 | 文本编辑器扩展
483 |
484 | 在几乎任何像样的文本编辑器支持 C 之际,有一些扩展,让编辑器更加令人愉快。下面是根据编辑器分目录的。
485 |
486 | ### Emacs
487 |
488 | * CEDET:Collection of Emacs Development Environment Tools;给 Emacs 提供一种类似 IDE 的特点,是内建的。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://cedet.sourceforge.net/)
489 | * Flycheck:现代语法检查。对于 C,它可以使用 GCC 或者 Clang 作为后端。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://github.com/flycheck/flycheck)
490 | * Yasnippet:一个模板系统,支持 C 的通用代码片段。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://github.com/capitaomorte/yasnippet)
491 |
492 | ### Vim
493 |
494 | * Syntastic:语法检查和语言分析。[Do What The Fuck You Want To license](https://github.com/scrooloose/syntastic/blob/master/LICENCE)。[官网](https://github.com/scrooloose/syntastic)
495 | * [YouCompleteMe](http://hao.importnew.com/youcompleteme/):一个 Vim 的代码补全引擎。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](http://valloric.github.io/YouCompleteMe/)
496 |
497 |
498 |
499 | 下面是实用的程序列表,包括了帮助你编写和调试 C 代码的库或者编译器,不包括编辑器。
500 |
501 | * adlint:一个静态分析器。支持完全的 C89 标准和部分 C99 标准。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://yanoh.github.io/adlint/)
502 | * Artistic Style:一个支持 C 的小而快的自动化代码格式化工具。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html)。[官网](http://astyle.sourceforge.net/)
503 | * address-sanitizer:一个很快的内存错误探测器。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://github.com/google/sanitizers)
504 | * [biicode](http://hao.importnew.com/biicode/):一个现代的 C 依赖管理器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://biicode.github.io/biicode/)
505 | * c:在命令行中编译和执行 C 脚本,也支持 shebang。 [Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/ryanmjacobs/c)
506 | * c99sh:用 hash-bang 运行 C 文件。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/RhysU/c99sh)
507 | * CBMC:C Bounded Model Checker;一个检查数组边界,指针安全和用户自定义断言的工具。[Original BSD](https://directory.fsf.org/wiki/License:BSD_4Clause)。[官网](http://www.cprover.org/cbmc/)
508 | * cdecl:一个在线服务,能够把 C 的声明翻译成英文,反向也可以。公共领域。[官网](https://github.com/mpv-player/mpv)
509 | * cinclude2dot:在 C 项目中使用 Graphviz 的图像包含依赖。任官网 GNU GPL 版本(根据文件中的要求)[官网](https://www.flourish.org/cinclude2dot/)
510 | * [Complexity](http://hao.importnew.com/complexity/):一个测量 C 代码复杂性的工具。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/complexity/)
511 | * DDD:各种命令行调试器的图形前端。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/ddd/ddd.html)
512 | * fab:让每次构建都最优的构建系统。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](http://fabutil.org/)
513 | * GDB:The GNU Project debugger;一个 C 调试器。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://www.gnu.org/software/gdb/)
514 | * Glade:一个让 TK+ GUIs 开发更快的 RAD 工具。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](https://glade.gnome.org/)
515 | * GMSL:GNU Make Standard Library;一个 GNU Make 额外功能的集合。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](http://gmsl.sourceforge.net/)
516 | * GNU Global:一个 C 的源码标签工具。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网 Global](https://www.gnu.org/software/global/)
517 | * gprof:一个性能分析工具。GNU binutils 的一部分。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://www.gnu.org/software/binutils/)
518 | * Highlight:把源码转化为高亮的格式化文本。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网](http://www.andre-simon.de/index.php)
519 | * include-what-you-use:帮助程序员发现不必要的包含和提供解决他们的建议。基于 LLVM/Clang(只能与它一起工作)。[NCSA](http://directory.fsf.org/wiki/License:IllinoisNCSA)。[官网](https://github.com/include-what-you-use/include-what-you-use)
520 | * indent:自动格式化 C 代码,让它更容易阅读。也能把一种风格的代码转化为另一种。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/indent/)
521 | * Make:一个控制程序的可执行和其他非代码文件的生成的工具。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本(链接到 GNU 的实现)。[官网](https://www.gnu.org/software/make/)
522 | * qo:无需分开的配置文件的构建系统。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/andlabs/qo)
523 | * rr:记录非确定执行来允许可确定调试的调试器。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://rr-project.org/)
524 | * tup:一个很快,基于文件,跨平台的构建系统。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://gittup.org/tup/index.html)
525 | * unifdef:移除 #ifdef 和 #if 指令包含的文本,不会改变文件的其他部分。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause) 和 [FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://dotat.at/prog/unifdef/)
526 | * Valgrind:各种动态分析工具,包括一个内存泄漏检测工具。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.valgrind.org/)
527 |
528 | 其他工具
529 |
530 | 下面是包罗万象的目录,主要是那些不适合放在其他目录的东西。
531 |
532 | * ApeTagLibs:APEv2 标签的 C 库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/jeremyevans/ape_tag_libs/tree/master/c)
533 | * bfd:处理二进制对象文件的库。GNU binutils 的一部分。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://sourceware.org/binutils/docs/bfd/)
534 | * [ccv](http://hao.importnew.com/ccv/):基于C语言、带缓存机制的现代计算机视觉核心库。 [3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/liuliu/ccv)
535 | * [cf4ocl](http://hao.importnew.com/cf4ocl/):The C Framework for OpenCL;一个跨平台面向对象框架,用于开发和用基准问题测试 [OpenCL](https://www.khronos.org/opencl/) 项目。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html)(库), [GNU GPL3](http://www.gnu.org/licenses/gpl.html)(其他代码)。[官网](https://fakenmc.github.io/cf4ocl/)
536 | * CommonMark:CommonMark 规范的 C 实现。[Variety of licenses, all free](https://github.com/jgm/CommonMark/blob/master/LICENSE)。[官网](https://github.com/jgm/CommonMark)
537 | * CException:异常的 C 实现。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/ThrowTheSwitch/CException)
538 | * docopt.c:命令行选项解析器的 C 实现。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/docopt/docopt.c)
539 | * dyncall:另一个外部函数接口库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://www.dyncall.org/)
540 | * FANN:Fast Artifical Neural Network library;一个神经网络的实现。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://leenissen.dk/fann/wp/)
541 | * Firm:一个 C 库,提供了基于图像中间表示,优化和适合编译器的汇编代码生成。配备了 C 的前端例子,使用相同的许可。[GNU LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)。[官网](http://pp.ipd.kit.edu/firm/Index)
542 | * gjrand:随机数字生成的例程库。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或者 [GNU GPLv3](http://www.gnu.org/licenses/gpl.html)(用户的选择)。[官网](http://sourceforge.net/projects/gjrand/)
543 | * GNU FreeIPMI:一个带内和带外的 IPMI 实现。[GNU GPL3](http://www.gnu.org/licenses/gpl.html)。[官网 FreeIPMI](https://gnu.org/software/freeipmi/index.html)
544 | * GNU gperf:一个完美的哈希函数生成器,提供一系列的字符串。输出 C 代码。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://www.gnu.org/software/gperf/)
545 | * GNU Libffcall:一个构建外部函数接口库的集合。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/libffcall/)
546 | * gperftools:一系列测量和提高性能的实用工具集合。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/gperftools/gperftools)
547 | * hammer:二进制格式的解析器组合。[GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).[官网](https://github.com/abiggerhammer/hammer)
548 | * Hans Boehm GC:C 的垃圾收集器?如果我用了不要介意。多种许可证,完全免费。[官网](http://www.hboehm.info/gc/)
549 | * huffandpuff:一个极小的哈夫曼编码器和解码器。公共领域。[官网](https://github.com/adamierymenko/huffandpuff)
550 | * iniparser:一个 .ini 文件的解析器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/ndevilla/iniparser)
551 | * jemalloc:一个 malloc 实现,着重于段错误的避免和可扩展并发支持。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://www.canonware.com/jemalloc/)
552 | * jwHash:一个很快的哈希表实现。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://github.com/watmough/jwHash)
553 | * kdtree:KD-trees 的简单库。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/jtsiomb/kdtree)
554 | * Kitsune:高效,通用的框架,用于软件的动态升级。 [GNU LGPL3](http://www.gnu.org/licenses/lgpl.html) 或更高版本。[官网](http://kitsune-dsu.com/)
555 | * libavl:一个包括各种自平衡二叉树的库。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](http://adtinfo.org/libavl.html/index.html)
556 | * libbson:BSON 实用库。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](https://github.com/mongodb/libbson)
557 | * libCello:引入高级语言给 C 的库。[官网](http://libcello.org/)
558 | * libcox:一个运行跨平台系统调用和跨系统标准工具的库。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](http://libcox.net/)
559 | * libffi:轻量级的外部函数接口库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/atgreen/libffi)
560 | * libgit2:Git 的纯 C 实现。[GNU GPL2 only, with a linking exception](https://github.com/libgit2/libgit2/blob/master/COPYING)。[官网](https://libgit2.github.com/)
561 | * libimobiledevice:一个跨平台协议库,用于与 iThings 通信。[GNU LGPLv2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) 或更高版本(库),[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或更高版本(工具)。[官网](https://github.com/libimobiledevice/libimobiledevice)
562 | * libmpv:音乐播放库。编译的时候加入 `./waf configure --disable-cplayer --enable-libmpv-shared` 来避免生成音乐播放器。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 或更高版本。[官网](https://github.com/mpv-player/mpv)
563 | * libnfc:一个平台独立的 NFC 库。[GNU LGPL3](http://www.gnu.org/licenses/lgpl.html)。[官网](https://github.com/nfc-tools/libnfc)
564 | * [libPhenom](http://hao.importnew.com/libphenom/):事件框架,用于构建高扩展和高性能系统。[Apache2.0](http://directory.fsf.org/wiki/License:Apache2.0)。[官网](http://facebook.github.io/libphenom/index.html)、[GitHub](https://github.com/facebook/libphenom)
565 | * libsoundio:跨平台,实时音频输入输出的库,有很多种后端。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/andrewrk/libsoundio)
566 | * libucl:通用配置库解析器。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/vstakhov/libucl)
567 | * libudp:一个统一设计模式的 C 实现。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://notabug.org/koz.ross/libudp)
568 | * libuv:跨平台异步 I/O。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/libuv/libuv)
569 | * libYAML:一个 YAML 1.1 解析器和发射器。 [Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://www.pyyaml.org/wiki/LibYAML)
570 | * lzo:一个很快的数据压缩库。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.oberhumer.com/opensource/lzo/)
571 | * mpc:解析器组合库。[FreeBSD](http://directory.fsf.org/wiki?title=License:FreeBSD "License:FreeBSD")。[官网](https://github.com/orangeduck/mpc)
572 | * ncurses:彩色的终端 UI 库。[GNU GPL3](http://www.gnu.org/licenses/gpl.html) 或更高版本。[官网](https://gnu.org/software/ncurses/)
573 | * nope.c:一个基于 C 语言,超级轻量级的软件平台,用于可扩展服务端和网络应用的开发(想想 C 程序员的 nodejs)。[官网](https://github.com/riolet/nope.c)
574 | * pbc:一个协议缓冲库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/cloudwu/pbc)
575 | * rabbitmq-c:[RabbitMQ](http://www.rabbitmq.com/) 的客户端库。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/alanxz/rabbitmq-c)
576 | * Ragel:为编译C的状态机的DSL。[GNU GPL2.1](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)。[官网](http://www.colm.net/open-source/ragel/)
577 | * uthash:哈希表实现,允许已经存在的数据结构很容易地存在哈希表里面。[1-clause BSD](http://troydhanson.github.io/uthash/license.html)。[官网](http://troydhanson.github.io/uthash/)
578 | * Viola:libCello 的简化版本。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](https://github.com/eatonphil/Viola)
579 | * zlib:一个相当漂亮却精致不张扬的压缩库。[3-clause BSD](http://directory.fsf.org/wiki/License:BSD_3Clause)。[官网](https://github.com/madler/zlib)
580 | * [Sundown](http://hao.importnew.com/sundown/):一个用C编写的符合标准的、快速的、安全的源码解析器。[官网](https://github.com/vmg/sundown)
581 |
582 | XML
583 |
584 | > “XML 是垃圾。真的,没有任何借口。XML 对人类不友好的,甚至对于电脑来说也是一场灾难。根官网 -Linus Torvalds
585 |
586 | * [Expat](http://hao.importnew.com/expat/):面向流的 XML 解析器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://www.libexpat.org/)
587 | * libxml2:一个符合标准,轻量级的 XML 解析器。[Expat](http://directory.fsf.org/wiki/License:Expat)。[官网](http://xmlsoft.org/)
588 | * [mini-xml](http://hao.importnew.com/mini-xml/):小型 XML 读写库。没有 C 标准库的依赖。[GNU LGPL2.1 with static linking exception](http://svn.msweet.org/mxml/trunk/COPYING)。[官网](http://www.msweet.org/projects.php?Z3)
589 |
590 | 其他资源
591 |
592 | 有影响力的书
593 | *具有广泛影响且值得阅读的 C 语言经典书籍。*
594 | * 待补充
595 |
596 | 知名网站/博客
597 | *值得关注的 C 语言技术站点和博客。*
598 | 中文
599 |
600 | * 待补充
601 |
602 | 英文
603 |
604 | * 待补充
605 |
606 | 微信公众号
607 | * CPP开发者:专注分享 C/C++ 开发相关的技术文章和工具资源。
608 |
609 |
--------------------------------------------------------------------------------