通过这 9 本开源好书学习C 语言
结构体——结构体允许你将逻辑上相关的变量分组。随后你可以将其作为一个整体来使用。
数组——一组相关数据的线性集合
字符串—— C 语言中的字符串就是内存中的一组连续的比特,包含了一组字符
动态内存——探讨了malloc(), free(), realloc() 和 calloc() 函数
更多内容——指针运算,typedef,枚举,结构体声明,命令行参数,多维数组,类型转换和类型提升,不完整类型,void指针,NULL指针和static关键字
标准输入输出库——用来进行文件的读写。
字符串操作——用来查找子串的函数,连接字符串的函数,获取字符串长度的函数,等等。
算数——一些可以满足你基本算数需求的函数。
本书基于Creative Commons Attribution-Noncommercial- No Derivative Works 3.0 协议发布。
《现代 C 语言》(Modern C)
作者 Jens Gustedt ,310页
本书鼓励读者逐级探索 C 语言的特性。内容一共分为如下五层境界:
第一层——使读者了解最基本的 C 语言程序。了解使用 C 语言的目的和数据结构,以及如何去使用它们
第二层——详细的说明了大部分主要概念以及特性,包括控制结构,数据类型操作符和函数。这一级的主要目的是让读者能够对于这些运行程序必备的知识,有更深刻的理解。
第三层——进入 C 语言的核心部分。详细的解释了指针,让你熟悉 C 语言的内存模型,并且让你了解大多数 C 语言库的接口
第四层——深入理解一些特定的主题。比如性能,重入,原子性,线程及泛型编程
第五层——探讨了作者对这门语言未来发展趋势的理解
本书基于Creative Commons Attribution-Noncommercial- No Derivative Works 3.0 协议发布
《GCC简介》(An Introduction to GCC)
作者 Brian Gough ,144页
本书介绍了 GNU C 语言和 C++编译器——gcc 和 g++,它们是 GNU 编译器套装(GCC)的一部分。
本书介绍了如何使用编译器。通过多年以来对邮件列表中的问题的观察,本书带领读者直击 GCC 的重要内容。
章节介绍:
编译c程序——介绍了如何使用gcc来编译 C 语言程序。单个文件或多个文件均可以编译,也可以使用操作系统函数和头文件。
编译选项——介绍了gcc中一些常用的编译选项。这些参数控制一些功能,例如搜索库函数和头文件的路径,提供额外的编译告警和诊断。预处理宏和 C 语言方言。
使用预处理器——描述了cpp(GNU C preprocessor)的使用方法,cpp是GCC的一部分。预处理器会在编译前将代码中的宏展开,当GCC处理c或者c+代码时,预处理器会自动被调用。
编译带有debug信息的程序——提供了一个-g选项用以在中间文件和可执行文件中存储额外的调试信息。这些调试信息使得我们可以追踪错误,将机器指令中的问题定位到源代码中。
优化编译——GCC是一个优化过的编译器。它提供了很多选项,可以加速编译或是减少编译后文件的体积。
编译C++程序——介绍了如何使用GCC编译C++程序以及该语言可以使用的命令行选项。
平台相关选项——介绍了一些常见平台可以使用的选项
排错——GCC提供了一些帮助和诊断选项用于帮助我们定位编译过程中出现的问题。
编译器相关工具——介绍了GCC编译过程中会用到的一些有用的工具。包括用来创建库的 GNU 归档工具 ar,GNU 性能和覆盖率测试程序gprof 和 gcov
编译器是如何工作的——详细介绍了GCC是如何把源文件编译为可执行文件的。编译是一个多阶段过程,涉及很多工具,包括GNU编译器本身,GNU汇编器,以及GNU链接器。在编译过程中使用的各种工具,我们统称为编译链。
检查编译后的文件——介绍了一些用来检查可执行文件和obj文件内容的工具。
常见错误信息——介绍了gcc和g++产生的最常见的错误和告警信息。每种情况都带有原因分析,样例以及建议的解决办法。
获取帮助——如果读者遇到了书中没有提到的问题,还有很多介绍GCC和语言的手册可以参考。
本书基于GNU Free Documentation协议发布
很多 C 语言书籍都可以免费下载,但是可惜的是它们并没有以开源协议来发布,或其基于何种协议并没有明确说明。以下对其进行介绍,排名不分先后:
《C编程导论》( Introduction to C Programming )– 作者 Rob Miles
- RedHatLinux新手入门教程(5)(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- VXWORKS内核分析(11-11)
- 嵌入式开发工具简介(11-09)
- Linux2.4内核为我们带来了什么?(11-12)
- RedHatLinux新手入门教程(11-12)