编辑推荐
C语言接口的参考手册揭秘C语言编程技巧剖析全部24个API和8个示例应用的源代码可重用的软件模块是构建大规模可靠应用程序的基石,创建可重用的软件模块是每个程序员和项目经理必须掌握的技能。C语言对创建可重用的API提供的语言和功能支持非常少,虽然C程序员写应用时都会用到API和库,但却很少有人去创建和发布新的能广泛应用的API。本书介绍用一种基于接口的设计方法创建可重用的API,这一方法将接口与实现分离开来,且与语言无关。书中详细描述了24个接口及其实现,便于读者深入了解此方法。这些接口涉及很多计算机领域的知识,包括数据结构、算法、字符串处理和并发程序。本书是C语言领域的经典名著,出版十余年仍畅销不衰,是几代程序员倍加推崇的力作。
内容简介
《C语言接口与实现:创建可重用软件的技术》概念清晰、实例详尽,是一本有关设计、实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南。书中提供了大量实例,重在阐述如何用一种与语言无关的方法将接口设计实现独立出来,从而用一种基于接口的设计途径创建可重用的API。《C语言接口与实现:创建可重用软件的技术》是所有C语言程序员不可多得的好书,也是所有希望掌握可重用软件模块技术的人员的理想参考书,适合各层次的面向对象软件开发人员、系统分析员阅读。
作者简介
David R.Hanson 普林斯顿大学计算机科学系教授,有着二十多年编程语言研究经验。他曾经同贝尔实验室合作开展研究工作,是适用于UNIX系统上的高质量C编译器Icc的开 发者之一。另著有A Retargetable C Compiler: Design and Implementation一书。
- 第1章 引言 1
- 1.1 文学程序 2
- 1.2 程序设计风格 6
- 1.3 效率 8
- 1.4 扩展阅读 9
- 1.5 习题 9
- 第2章 接口与实现 11
- 2.1 接口 11
- 2.2 实现 13
- 2.3 抽象数据类型 15
- 2.4 客户程序的职责 17
- 2.5 效率 21
- 2.6 扩展阅读 22
- 2.7 习题 22
- 第3章 原子 24
- 3.1 接口 24
- 3.2 实现 25
- 3.3 扩展阅读 30
- 3.4 习题 31
- 第4章 异常与断言 33
- 4.1 接口 35
- 4.2 实现 38
- 4.3 断言 44
- 4.4 扩展阅读 46
- 4.5 习题 47
- 第5章 内存管理 49
- 5.1 接口 50
- 5.2 产品实现 54
- 5.3 稽核实现 55
- 5.4 扩展阅读 62
- 5.5 习题 63
- 第6章 再谈内存管理 65
- 6.1 接口 65
- 6.2 实现 67
- 6.3 扩展阅读 72
- 6.4 习题 73
- 第7章 链表 75
- 7.1 接口 75
- 7.2 实现 79
- 7.3 扩展阅读 83
- 7.4 习题 83
- 第8章 表 84
- 8.1 接口 84
- 8.2 例子:词频 87
- 8.3 实现 91
- 8.4 扩展阅读 97
- 8.5 习题 97
- 第9章 集合 99
- 9.1 接口 99
- 9.2 例子:交叉引用列表 101
- 9.3 实现 107
- 9.3.1 成员操作 109
- 9.3.2 集合操作 111
- 9.4 扩展阅读 114
- 9.5 习题 115
- 第10章 动态数组 116
- 10.1 接口 116
- 10.2 实现 119
- 10.3 扩展阅读 122
- 10.4 习题 122
- 第11章 序列 123
- 11.1 接口 123
- 11.2 实现 125
- 11.3 扩展阅读 129
- 11.4 习题 129
- 第12章 环 131
- 12.1 接口 131
- 12.2 实现 134
- 12.3 扩展阅读 141
- 12.4 习题 141
- 第13章 位向量 142
- 13.1 接口 142
- 13.2 实现 144
- 13.2.1 成员操作 146
- 13.2.2 比较 150
- 13.2.3 集合操作 151
- 13.3 扩展阅读 152
- 13.4 习题 153
- 第14章 格式化 154
- 14.1 接口 154
- 14.1.1 格式化函数 155
- 14.1.2 转换函数 157
- 14.2 实现 160
- 14.2.1 格式化函数 161
- 14.2.2 转换函数 166
- 14.3 扩展阅读 170
- 14.4 习题 171
- 第15章 低级字符串 172
- 15.1 接口 173
- 15.2 例子:输出标识符 178
- 15.3 实现 179
- 15.3.1 字符串操作 180
- 15.3.2 分析字符串 184
- 15.3.3 转换函数 188
- 15.4 扩展阅读 189
- 15.5 习题 189
- 第16章 高级字符串 192
- 16.1 接口 192
- 16.2 实现 197
- 16.2.1 字符串操作 200
- 16.2.2 内存管理 204
- 16.2.3 分析字符串 205
- 16.2.4 转换函数 209
- 16.3 扩展阅读 210
- 16.4 习题 210
- 第17章 扩展精度算术 212
- 17.1 接口 212
- 17.2 实现 217
- 17.2.1 加减法 218
- 17.2.2 乘法 220
- 17.2.3 除法和比较 221
- 17.2.4 移位 226
- 17.2.5 字符串转换 228
- 17.3 扩展阅读 230
- 17.4 习题 230
- 第18章 任意精度算术 232
- 18.1 接口 232
- 18.2 例子:计算器 235
- 18.3 实现 240
- 18.3.1 取反和乘法 242
- 18.3.2 加减法 243
- 18.3.3 除法 246
- 18.3.4 取幂 247
- 18.3.5 比较 249
- 18.3.6 便捷函数 250
- 18.3.7 移位 251
- 18.3.8 与字符串和整数的转换 252
- 18.4 扩展阅读 254
- 18.5 习题 255
- 第19章 多精度算术 257
- 19.1 接口 257
- 19.2 例子:另一个计算器 263
- 19.3 实现 269
- 19.3.1 转换 272
- 19.3.2 无符号算术 275
- 19.3.3 有符号算术 277
- 19.3.4 便捷函数 280
- 19.3.5 比较和逻辑操作 285
- 19.3.6 字符串转换 288
- 19.4 扩展阅读 290
- 19.5 习题 291
- 第20章 线程 292
- 20.1 接口 294
- 20.1.1 线程 294
- 20.1.2 一般信号量 298
- 20.1.3 同步通信通道 301
- 20.2 例子 301
- 20.2.1 并发排序 302
- 20.2.2 临界区 305
- 20.2.3 生成素数 307
- 20.3 实现 311
- 20.3.1 同步通信通道 311
- 20.3.2 线程 313
- 20.3.3 线程创建和上下文切换 322
- 20.3.4 抢占 328
- 20.3.5 一般信号量 330
- 20.3.6 MIPS和ALPHA上的上下文切换 332
- 20.4 扩展阅读 335
- 20.5 习题 336
- 附录A 接口摘要 339
- 参考书目 363