清单狂魔,只挖坑不填坑。。

前言

最近经常被询问 C 语言 相关的问题,突然便也觉得需要思考一下 C 语言的进阶了。
我用 C 语言写过的最大的一个项目,也只是那个贪吃蛇,后来就断断续续地用 Python、Java、Matlab 去了。以至于看 JVM/CPython 的源代码时看到一堆的宏,只会不知所措。

所以也就整理个清单,打算找时间补补了。。

基础

  1. 语法:C Primer Plus
  2. 调试:gdb、汇编
  3. 编译:cmake
  4. library or executable?

开源库

日志

  1. zlog:日志

测试

  1. Criterion:21世纪的 C语言 跨平台测试框架

字符串处理

  1. ICU:一个 unicode 字符串处理库.
  2. PCRE:一个正则处理库

数据结构与算法

C 标准库既没有 C++ 的 STL,也没 Java 的 Collections。每次都要自己造轮子也太辛苦了点。。所以有的话当然要用别人的轮子了。

  1. Collections-C:提供了常用数据结构的实现,API 超简洁,注释很详细。源码抽空要仔细读一遍。

数据保存

  1. SQLite:这个在 Python 小项目里也常用,以文件为载体的嵌入式数据库。
  2. cJSON:json 编解码

图形库

总免不了想搞个图形界面。。

  1. cairo:2D 图形库
  2. LCUI:一个使用 xml+css 写 UI 的 C UI库,适合写简单的跨平台应用。
  3. Learning OpenGL:这俩你都不想用?那直接 OpenGL 搞起吧。

更多

awesome-c

C 语言 进阶的更多相关文章

  1. 【R笔记】R语言进阶之4:数据整形(reshape)

    R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...

  2. 《C语言进阶剖析》课程目录

    <C语言进阶剖析>学习笔记                                                         本文总结自狄泰软件学院唐佐林老师的<C语言 ...

  3. 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01

    书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...

  4. R语言进阶

    一.初学入门:<R in Action><The Art of_R Programming>入门者可首选两本,前者从统计角度入手,分高中低三部分由浅入深的讲解了如何用R来实现统 ...

  5. 编程C语言进阶篇——自定义数据类型:共同体

    什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于变量设置时相应属 ...

  6. 编程C语言进阶篇——自定义数据类型:结构体

    一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...

  7. 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包

    一 .函数 1.1. 函数的定义和调用 函数的定义以funckeyword作为前缀,接着是函数名字,接着跟着一个能够带有參数.也能够不带參数的圆括号.接着用-> 指示函数的返回类型. 函数运行体 ...

  8. 苹果新的编程语言 Swift 语言进阶(五)--控制流

    Swift 语言支持C语言全部的控制语句.包含for  和while循环语句,if和switch条件语句,以及break和continue控制语句等. Swift 语言除了支持以上语句,还添加了一个f ...

  9. 苹果新的编程语言 Swift 语言进阶(十二)--选项链

    选项链是使用选项来查询和调用其属性.方法或下标的一个过程,假设选项包括一个值,则属性.方法.下标的查询和调用成功,否则,调用返回nil. 选项链能用在不论什么类型的选项来检查对其一个属性.方法.下标的 ...

随机推荐

  1. springboot整合activiti报错[processes/]不存在解决方案

    springboot整合activiti时,启动抛异常 nested exception is java.io.FileNotFoundException: class path resource [ ...

  2. 【模板时间】◆模板·II◆ 树链剖分

    [模板·II]树链剖分 学长给我讲树链剖分,然而我并没有听懂,还是自学有用……另外感谢一篇Blog +by 自为风月马前卒+ 一.算法简述 树链剖分可以将一棵普通的多叉树转为线段树计算,不但可以实现对 ...

  3. MySQL - Linux下安装

    本安装方式仅对5.7.21版本负责. 下载地址:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2 ...

  4. go get超时解决办法

    go get gopkg.in/yaml.v2超时,发现被墙了,解决办法如下: 1.安装golang.org/x/net $ mkdir -p $GOPATH/src/golang.org/x/ $ ...

  5. RabbitMQ (1) 环境安装

    1.下载erlang, 设置系统的环境变量 下载地址:http://www.erlang.org/downloads ERLANG_HOME=D:\Program\erl9.3 Path = %ERL ...

  6. c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】

    引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...

  7. PPT入门学习笔记1:待修改

    一直被比人忽悠实在是累了,我可以接受自己的失误,但我接受不了别人一次又一次的坑我! 做PPT的原则是什么? 1.一个目标: "一个PPT只为一类人服务,针对不同的听众制作不同层次内容的PPT ...

  8. RepeatMasker使用

    RM是library-based,通过相似性比对来识别重复序列,可以屏蔽序列中转座子重复序列和低复杂度序列(默认将其替换成N).使用数据库Dfam和Repbase. The Dfam database ...

  9. POJ:3061-Subsequence(尺取法模板详解)

    Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18795 Accepted: 8043 Descript ...

  10. 菜鸟教程perl总结

    数据类型有:  标量$, 数组@,哈希% 数组声明 :  @hits = (25, 30, 40);  或者  @sites = qw/google taobao runoob/; 数组操作 pop, ...