C程序设计新思维
2020-03-16 14:44:58 0 举报
AI智能生成
C程序设计新思维
作者其他创作
大纲/内容
术语表
欢迎来到异步社区!
异步社区的来历
社区里都有什么?
购买图书
下载资源
与作译者互动
灵活优惠的购书
特别优惠
纸电图书组合购买
社区里还可以做什么?
写作
会议活动早知道
加入异步
封面介绍
C就是Punk Rock
Q&A(本书的参考引用)[3]
标准:难以抉择
K&R(1978前后)
ANSI C89
ISO C99
C11
POSIX标准
Unix
POSIX
BSD
GNU
注释
本书使用的排版约定
使用示例代码
第一部分 开发环境
1 准备方便的编译环境
1.1 使用包管理器
1.2 在Windows下编译C
1.2.1 Windows中的POSIX环境
2 调试、测试和文档
2.1 使用调试器
2.1.1 GDB变量
2.1.2 打印结构
2.2 利用Valgrind检查错误
2.3 单元测试
例2-3 一个对字典的测试,参见“11.2.2实现一个字典”(dict_test.c)
2.3.1 把程序用作库
2.3.2 测试覆盖
2.4 编制文档
2.4.1 Doxygen
叙事
2.4.2 用CWEB解释代码
2.5 错误检查
2.5.1 在错误中的用户参与是什么?
2.5.2 用户工作的上下文环境
2.5.3 如何返回错误信息
3 打包项目
3.1 shell
3.1.1 用shell命令的输出来替换命令
3.1.2 用shell的循环来处理一组文件
3.1.3 针对文件的测试
3.1.4 fc
3.2 makefile还是shell脚本
例3-4 把一个if/then和一个测试放在一个makefile中(make_bit)
3.3 用Autotools打包代码
3.3.1 一个Autotools的示例
3.3.2 用makefile.am来描述makefile
1.形式变量
2.内容变量
3.添加测试
4.添加makefile位
3.3.3 配置脚本
更多的shell位
4 版本控制
5 和谐共处
5.1 过程
5.1.1 作为外来语言写程序
5.1.2 包装函数
5.1.3 跨越边境的代理数据结构
5.1.4 连接
5.2 与Python一起工作
例5-2 理想气体函数的包装函数(py/ideal.py.c)
5.2.1 编译与连接
5.2.2 Automake的条件子目录
5.2.3 Autotools支持下的Distutils
第二部分 语言
6 玩转指针
6.1 自动、静态和手工内存
6.2 持久性的状态变量
例6-1 由一个状态机所生成的菲波那契数列(fibo.c)
6.3 不使用malloc的指针
6.3.1 结构被复制,数组创建别名
6.3.2 malloc和内存操纵
6.3.3 错误来源于星号
6.3.4 你需要知道的各种指针运算
typedef作为一种教学工具
7 可以忽略的C语法
7.1 不需要明确地从main函数返回
7.2 让声明流动
在运行时设置数组的长度
7.3 减少类型转换
7.4 枚举和字符串
7.5 标签、goto、switch和break
7.5.1 考虑goto
7.5.2 switch
7.6 被摒弃的float
例7-3 float能够存储这么多的不同数字(floatfail.c)
例7-4 病态的数据:不再成为大问题(stddev.c)
8 障碍和机遇
8.1 营造健壮和繁盛的宏
例8-1 我们可以用花括号控制变量的作用域,就像典型的非宏代码一样(curly.c)
预处理器技巧
9 文本
9.1 使用asprintf,使字符串的处理不再痛苦
例9-1 创建字符串的乏味方法(sadstrings.c)
例9-2 这个版本只是从例9-1中删除了2行,但这2行却是最令人感觉痛苦的 (getstrings.c)
9.1.1 安全
9.1.2 常量字符串
9.1.3 用asprintf扩展字符串
9.1.4 strtok的赞歌
9.2 Unicode
9.2.1 C代码的编码
9.2.2 Unicode函数库
9.2.3 示例代码
10 更好的结构
10.1 复合文字
例10-1 我们可以使用复合文字来绕过临时变量(sum_to_nan.c)
通过复合文字进行初始化
10.2 可变参数宏
例10-2 一个用于处理错误的宏,取自例2-5(stopif.h)
例10-3 宏的...覆盖了for循环的整个循环体(varad.c)
10.3 安全终止的列表
例10-4 使用一个可变参数宏生成一个复合文字(safe_sum.c)
10.4 Foreach
10.5 函数的向量化
例10-5 把接受任何指针类型的参数的任何函数进行向量化的机制(vectorize.c)
10.6 指定的初始化值
例10-6 使用指定的初始化值指定一个结构(boxes.c)
10.7 用零初始化数组和结构
10.8 typedef可以化繁为简
风格说明:
10.9 从函数返回多个数据项
例10-7 如果需要从一个函数中返回多个值,可以返回一个结构(papersize.c)
报告错误
10.10 灵活的函数输入
10.10.1 把函数声明为printf风格
10.10.2 可选参数和命名参数
10.10.3 使无聊的函数焕发光彩
10.11 void指针以及它所指向的结构
10.11.1 具有通用输入的函数
10.11.2 通用结构
11 C语言的面向对象编程
11.1 你所不明白的(以及为什么你不能不明白)
11.1.1 作用域
私有结构成员
11.1.2 用操作符重载进行重载
_Generic
11.2 扩展结构和字典
11.2.1 扩展一个结构
C,更少的缝隙
11.2.2 实现一个字典
11.2.3 基于指向对象的指针编码
11.3 你结构中的函数
11.4 引用计数
11.4.1 示例:一个子字符串对象
11.4.2 一个基于代理的组构造模型
12 库
12.1 GLib
12.2 POSIX
12.2.1 为巨大的数据集合使用mmap
12.2.2 用Pthreads轻松实现线程
1.Pthreads列表
2.用mutex保护线程资源
3.示例
4._Thread_local和静态变量
12.3 GNU科学计算库
例12-5 找到与一组输入点距离之和最小的点(gsl_distance.c)
12.4 SQLite
查询
12.5 libxml和cURL
例12-6 解析一个简单格式输入的纽约时报的头条(nyt_feed.c)
0 条评论
下一页