C 语言 进阶
清单狂魔,只挖坑不填坑。。
前言
最近经常被询问 C 语言 相关的问题,突然便也觉得需要思考一下 C 语言的进阶了。
我用 C 语言写过的最大的一个项目,也只是那个贪吃蛇,后来就断断续续地用 Python、Java、Matlab 去了。以至于看 JVM/CPython 的源代码时看到一堆的宏,只会不知所措。
所以也就整理个清单,打算找时间补补了。。
基础
- 语法:C Primer Plus
- 调试:gdb、汇编
- 编译:cmake
- library or executable?
开源库
日志
- zlog:日志
测试
- Criterion:21世纪的 C语言 跨平台测试框架
字符串处理
数据结构与算法
C 标准库既没有 C++ 的 STL,也没 Java 的 Collections。每次都要自己造轮子也太辛苦了点。。所以有的话当然要用别人的轮子了。
- Collections-C:提供了常用数据结构的实现,API 超简洁,注释很详细。源码抽空要仔细读一遍。
数据保存
图形库
总免不了想搞个图形界面。。
- cairo:2D 图形库
- LCUI:一个使用 xml+css 写 UI 的 C UI库,适合写简单的跨平台应用。
- Learning OpenGL:这俩你都不想用?那直接 OpenGL 搞起吧。
更多
C 语言 进阶的更多相关文章
- 【R笔记】R语言进阶之4:数据整形(reshape)
R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...
- 《C语言进阶剖析》课程目录
<C语言进阶剖析>学习笔记 本文总结自狄泰软件学院唐佐林老师的<C语言 ...
- 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01
书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...
- R语言进阶
一.初学入门:<R in Action><The Art of_R Programming>入门者可首选两本,前者从统计角度入手,分高中低三部分由浅入深的讲解了如何用R来实现统 ...
- 编程C语言进阶篇——自定义数据类型:共同体
什么是"自定义数据类型"?顾名思义,就是用户可以随时在程序中自行定义新的数据类型.自定义数据类型时需要设置数据类型的名称及其成员.数据类型成员各属性的设置方法等同于变量设置时相应属 ...
- 编程C语言进阶篇——自定义数据类型:结构体
一.结构体 定义方法: 结构名 变量名 特点: 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用"<","=="等运算符,如果使用则需要对运算符 ...
- 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
一 .函数 1.1. 函数的定义和调用 函数的定义以funckeyword作为前缀,接着是函数名字,接着跟着一个能够带有參数.也能够不带參数的圆括号.接着用-> 指示函数的返回类型. 函数运行体 ...
- 苹果新的编程语言 Swift 语言进阶(五)--控制流
Swift 语言支持C语言全部的控制语句.包含for 和while循环语句,if和switch条件语句,以及break和continue控制语句等. Swift 语言除了支持以上语句,还添加了一个f ...
- 苹果新的编程语言 Swift 语言进阶(十二)--选项链
选项链是使用选项来查询和调用其属性.方法或下标的一个过程,假设选项包括一个值,则属性.方法.下标的查询和调用成功,否则,调用返回nil. 选项链能用在不论什么类型的选项来检查对其一个属性.方法.下标的 ...
随机推荐
- css隐藏元素的六类13种方法
隐藏元素的方法 隐藏元素的方法可以总结为六类:直接隐藏.对溢出内容隐藏.对元素透明度进行调整.将元素移除当前屏幕.对元素的层级关系进行调整.对元素进行裁剪 只有对元素的透明度进行调整才可以点击,其余都 ...
- centos安装django
1.如果默认安装的是python2.6,先升级至python2.7 参考:http://www.cnblogs.com/tiger2soft/p/5677843.html 2.安装pip 先下载get ...
- Nginx配置文件详细解释
转自:https://www.cnblogs.com/knowledgesea/p/5175711.html 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开 ...
- JavaScript: window.onload = function() {} 里面的函数不执行
问题:写了一个最简单的页面.在script标签中使用的 window.onload = function() { function add() { //... } } 页面上:<div oncl ...
- 堆(heap)和栈(stack)几点认识
堆(heap)和栈(stack)主要的区别由以下几点:1.管理方式不同:2.空间大小不同:3.产生碎片不同:4.生长方向不同:5.分配归属不同:6.分配效率不同:7.存取效率不同:管理方式:对于栈来讲 ...
- Linux中用户与用户组管理
1.基础知识 Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求. 任何需要使用操作系统的用户,都需要一个系统账号,账号分为:管理员账号与普通用户账号 ...
- Angular环境配置
1.安装node.js 访问官方网站:https://nodejs.org/en/下载node.js,直接下一步安装即可.安装完成打开cmd命令窗口输入node -v出现node版本号安装成功. 2. ...
- 细说 unicode 、utf-8 、utf-16、ascii 、gbk 、gb2312
一.计算机的由来 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为”字节“.再后来,他们又做了一些可以处理这些 ...
- emplace_back
c++11 的 list deque 和 vector 增加了emplace_back函数,相对于push_back函数,它减少了一次类的构造,因此效率更高,推荐使用. #include <li ...
- Linux YUM (Yellowdog Updater, Modified) Commands for Package Management
Linux YUM (Yellowdog Updater, Modified) Commands for Package Management In this article, we will lea ...