lthw

笨办法学C 练习20:Zed的强大的调试宏

练习20:Zed的强大的调试宏原文:Exercise 20: Zed's Awesome Debug Macros译者:飞龙在C中有一个永恒的问题,它伴随了你很长时间,然而在这个练习我打算使用一系列我开发的宏来解决它。到现在为止你都不知道它们的强大之处,所以你必须使用它们,总有一天你会来找我说,“Zed,这些调试宏真是太伟大了,我应该把我的第一个孩子的出生归功于你,因为你治

笨办法学C 练习28:Makefile 进阶

练习28:Makefile 进阶原文:Exercise 28: Intermediate Makefiles译者:飞龙在下面的三个练习中你会创建一个项目的目录框架,用于构建之后的C程序。这个目录框架会在这本书中剩余的章节中使用,并且这个练习中我会涉及到Makefile便于你理解它。这个结构的目的是,在不凭借配置工具的情况下,使构建中等规模的程序变得容易。如果完成了它,你会学

笨办法学C 练习26:编写第一个真正的程序

练习26:编写第一个真正的程序原文:Exercise 26: Write A First Real Program译者:飞龙这本书你已经完成一半了,所以你需要做一个期中检测。期中检测中你需要重新构建一个我特地为本书编写的软件,叫做devpkg。随后你需要以一些方式扩展它,并且通过编写一些单元测试来改进代码。注我在一些你需要完成的练习之前编写了这个练习。如果你现在尝试这个练习

笨办法学C 后记:“解构 K&R C” 已死

“解构 K&R C” 已死原文:Deconstructing K&RC Is Dead译者:飞龙我彻底失败了。我放弃了多年以来尝试理清C语言如何编写的想法,因为它的发明是有缺陷的。起初,我的书中有一章叫做“解构 K&R C”。这一章的目的是告诉人们永远不要假设它们的代码是正确的,或者对于任何人的代码,不管它有多出名,也不能避免缺陷。这看起来似乎并不是革命性的想法,并且对我来

笨办法学C 练习45:一个简单的TCP/IP客户端

练习45:一个简单的TCP/IP客户端原文:Exercise 45: A Simple TCP/IP Client译者:飞龙我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫做netclient。为此我需要向Makefile添加一些工具,来处理bin/目录下的小程序。扩展Makefile首先,为程序添加一些变量,就像单元测试的TESTS和TEST_SRC

笨办法学C 练习27:创造性和防御性编程

练习27:创造性和防御性编程原文:Exercise 27: Creative And Defensive Programming译者:飞龙你已经学到了大多数C语言的基础,并且准备好开始成为一个更严谨的程序员了。这里就是从初学者走向专家的地方,不仅仅对于C,更对于核心的计算机科学概念。我将会教给你一些核心的数据结构和算法,它们是每个程序员都要懂的,还有一些我在真实程序中所使用

笨办法学C 练习18:函数指针

练习18:函数指针原文:Exercise 18: Pointers To Functions译者:飞龙函数在C中实际上只是指向程序中某一个代码存在位置的指针。就像你创建过的结构体指针、字符串和数组那样,你也可以创建指向函数的指针。函数指针的主要用途是向其他函数传递“回调”,或者模拟类和对象。在这歌1练习中我们会创建一些回调,并且下一节我们会制作一个简单的对象系统。函数指针的

笨办法学C 练习17:堆和栈的内存分配

练习17:堆和栈的内存分配原文:Exercise 17: Heap And Stack Memory Allocation译者:飞龙在这个练习中,你会在难度上做一个大的跳跃,并且创建出用于管理数据库的完整的小型系统。这个数据库并不实用也存储不了太多东西,然而它展示了大多数到目前为止你学到的东西。它也以更加正规的方法介绍了内存分配,以及带领你熟悉文件处理。我们实用了一些文件I

笨办法学C 练习30:自动化测试

练习30:自动化测试原文:Exercise 30: Automated Testing译者:飞龙自动化测试经常用于例如Python和Ruby的其它语言,但是很少用于C。一部分原因是自动化加载和测试C的代码片段具有较高的难度。这一章中,我们会创建一个非常小型的测试“框架”,并且使用你的框架目录构建测试用例的示例。我接下来打算使用,并且你会包含进框架目录的框架,叫做“minun

笨办法学C 练习35:排序和搜索

练习35:排序和搜索原文:Exercise 35: Sorting And Searching译者:飞龙这个练习中我打算涉及到四个排序算法和一个搜索算法。排序算法是快速排序、堆排序、归并排序和基数排序。之后在你完成基数排序之后,我打算想你展示二分搜索。然而,我是一个懒人,大多数C标准库都实现了堆排序、快速排序和归并排序算法,你可以直接使用它们:# include # inc