购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

问与答

问:设置“问与答”的目的是什么?

答:很高兴有此一问。“问与答”将出现在每章的结尾。设置它主要有以下几个目的。

最主要的目的是解决学生学习C语言时经常遇到的问题。读者可以在此(从某种意义上说)与作者对话,这种形式非常像是读者置身于作者的C语言课堂一般。

另一个目的是为对应章中涉及的某些主题提供额外的信息。本书的读者可能会有不同的知识背景。有些读者可能具有其他编程语言的经验,而另外一些读者可能是第一次学习编程。有多种语言经验的读者也许会满足于简要的说明和几个示例,而那些缺少经验的读者则需要更多讲解。最基本的原则是,如果你觉得哪个主题讲得不够详细,可以查阅“问与答”部分以获取更多的信息。

必要时,“问与答”中会讨论多种C编译器的常见差异。例如,我们将介绍一些由特定编译器提供的频繁使用(但未标准化)的特性。

问: lint 是做什么的?(p.5)

答: lint 检查C程序中潜在的错误,包括(但不限于)可疑的类型组合、未使用的变量、不可达的代码以及不可移植的代码。 lint 会产生一系列程序员有必要从头到尾仔细阅读的诊断信息。使用 lint 的好处是,它可以检查出被编译器漏掉的错误。但我们需要记得使用 lint ,因为它太容易被忘记了。更糟的是, lint 可以产生数百条信息,而这些信息中只有少部分指出了实际错误。

问: lint 这个名字是如何得来的?

答:与其他许多UNIX工具不同, lint 不是缩写。它的命名是因为它像在程序中“吹毛求疵”。

问:如何获得 lint

答:如果使用UNIX系统,那么会自动获得 lint ,因为它是一个标准的UNIX工具。如果采用其他操作系统,则可能没有 lint 。幸运的是, lint 的各种版本都可以从第三方获得。在许多Linux发行版中都包含 lint 的增强版本 splint (Secure Programming Lint),这一工具可以免费下载。

问:有没有办法在不使用 lint 的情况下强制编译器进行更彻底的错误检查?

答:有。大多数编译器能根据我们的要求进行更彻底的检查。除了检查错误(毫无疑问违背C语言规定的情况)外,大多数编译器还提供警告,指出可能存在问题的地方。有些编译器具有多个“警告级别”,选择较高的级别能发现更多问题。如果你的编译器支持多级警告,建议选择最高级别,以便编译器执行其能力范围内最彻底的检查。第2章的“问与答”部分讨论了GCC(➤2.1节)的错误检查选项,GCC是随Linux操作系统发布的。

* 问:我很关心能让程序尽可能可靠的方法。除了 lint 和调试工具以外,还有其他有效的工具吗?

答:有的。其他常用的工具包括越界检查工具(bounds-checker)和内存泄漏监测工具(leak-finder)。C语言不要求检查数组下标,而越界检查工具增加了此项功能。内存泄漏监测工具帮助定位“内存泄漏”,即那些动态分配却从未被释放的内存块。 aK/bDtt7Ly7mtxU8vT5bxAKqP9wPsC6LToZPLTvyLdKGvIQRI2KZRzbImxIWf/gt

点击中间区域
呼出菜单
上一章
目录
下一章
×