每日分享 – 基础知识 | 每日一面(61)

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:完整的头文件搜索规则是怎样的?

小林:准确的的行为是由实现定义的,这就是应该有文档说明; 通常, 用 <> 括起来的头文件会先在一个或多个标准位置搜索。用 “” 括起来的头文件会首先在 “当前目录” 中搜索, 然后 (如果没有找到) 再在标准位置搜索。

读者:我在编译一个程序, 看起来我好像缺少需要的一个或多个头文件?

小林:根据 “缺少的” 头文件的种类, 有几种情况。如果缺少的头文件是标准头文件, 那么你的编译器有问题。你得向你的供货商或者精通你的编译器的人求助。对于非标准的头文件问题更复杂一些。

有些完全是系统或编译器相关的。某些是完全没有必要的, 而且应该用它们的标准等价物代替。例如, 用 <stdlib.h> 代替 <malloc.h>。其它的头文件, 如跟流行的附加库相关的, 可能有相当的可移植性。

标准头文件存在的部分原因就是提供适合你的编译器, 操作系统和处理器的定义。你不能从别人那里随便拷贝一份就指望它能工作, 除非别人跟你使用的是同样的环境. 你可能事实上有移植性问题或者编译器问题。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

正文完