Skip to content
Alick Zhao edited this page Apr 13, 2013 · 3 revisions

% C 程序设计语言 % Alick Zhao % 2012/09/16

历史和特点

C 语言是一门很有历史的程序设计语言, 也是如今最流行(使用广泛)的语言之一。

C 语言诞生于1972 年,设计者是 AT&T Bell 实验室的 Dennis M. Ritchie。 它的最初应用就是重写了Unix。

C语言的特点是高效、灵活。它的移植性很好。因为它兼有高级语言和 汇编语言的特点,所以它有时候会被称为“中级语言”。 它属于过程式编程语言。

指针是C语言的精华。

实用工具

有一些实用工具值得一提:

  • splint: lint tool
  • cproto: 自动生成头文件中所需的原型声明
  • cdecl: 识别复杂原型声明 (读音:see-deck-ll)
  • valgrind: 检测内存泄漏
  • ccache: 用缓存加速编译
  • colorgcc: 彩色化 gcc/g++/ccache 的输出

项目构建

当项目很小时,直接敲 gcc 命令或者手写 Makefile 用 make 编译即可。 当项目文件较多、目录结果复杂后,自动化构建系统可以减轻开发人员的负担。

GNU Autotools 是 GNU 的构建系统,包括 autoconf 等用于生成 ./configure 文件用于寻找构建依赖的工具和库,automake 自动生成 Makefile 等。要查看 GNU 构建系统的手册,使用 info autoconf。自动化得到Makefile的流程图参考info autoconf 的Making configure Scripts一节。

CMake 是另一个流行的构建系统,它能在 Unix 平台上生成 Makefile,还能生成许多 IDE (包括 MS VC)的项目文件。使用 CMake 时需要手写 CMakeLists.txt 文件。

out-of-tree build

GNU Autotools:

mkdir build
cd build
../configure # enable/disable components with --with-xxx option
make

CMake:

mkdir build
cd build
cmake .. # enable/disable components with options like -DENABLE_XXX=On/Off
make

Tips from 《C专家编程》(Expert C Programming)

  • “始终将 -l 函数库选项放在编译命令行的最右边。”编译命令行上静态链接库的顺序是非常重要的。符号通常以从左到右的顺序去解析。如果在自己代码前引入静态库,那么事实上不会从函数库 中提取任何符号。

特定主题的资料

  1. Understand integer conversion rules
  2. C语言运算符优先级详细列表
  3. Practical Advice for Signed Overflow Issues
  4. 辨识类型:右左法则
  5. C Coding Style Notes
  6. Linux Coding Style

全面的资料

  1. Linux常用C函数
  2. Linux C编程一站式学习
  3. ##C on Freenode Wiki
  4. C Programming on Wikibooks
Clone this wiki locally