您的位置:首页 > 其它

记一笔:关于文件包含

2011-11-03 17:06 169 查看
转自:《Pointers on C》  Kenneth A. Reek 著

一、函数库文件包含

    编译器支持两汉走不同类型的#include 文件包含:函数库文件和本地文件。事实上,它们之间的区别很小。

    函数库头文件包含使用下面的语法。

    #include <filename>

    对于filename,并不存在任何限制,不过根据约定,标准库文件以一个.h后缀结尾。

    编译器通过观察由编译器定义的“一系列标准位置”查找函数库头文件。你所使用的编译器的文档应该说明这些标准位置是什么,以及你怎样修改它们或者在列表中添加其他位置。例如,在典型情况下,运行于UNIX系统上的C编译器在/usr/include目录查找函数库头文件。这种编译器有一个命令行选项,允许你把其他目录添加到这个列表中,这样你就可以创建你自己的头文件函数库。同样,请查阅你使用的编译器的文档,看看你的系统在这方面是怎样规定的。

二、本地文件包含

    下面是#include 指令的另一种形式。

    #include "filename"

    标准允许编译器自行决定是否把本地形式的#include 和函数库形式的#include 区别对待。你可以对本地头文件先使用一种特殊的处理方式,如果失败,编译器再按照函数库头文件的处理方式对它们进行处理。处理本地头文件的一种常见策略就是在源文件所在的当前目录进行查找,如果该头文件并未找到,编译器就像查找函数库头文件一样在标准位置查找本地头文件。

    你可以在所有的#include 语句中使用双引号而不是尖括号。但是,使用这种方法,有些编译器在查找函数库头文件时可能会浪费少许时间。对函数库头文件使用尖括号的另一个较好的理由是它能给读者提供一些信息。使用尖括号,下面这条语句

    #include <errno.h>

    显然显然引用的是一个函数库头文件。如果使用另一种形式,

    #include "errno.h"

    就无法弄清楚这个和上面相同的文件到底是一个函数库头文件还是一个本地文件。要想农明白它究竟是哪种类型?唯一的方法是检查执行编译过程的目录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息