17. C语言 头文件

        头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。

        有两种类型的头文件:程序员编写的头文件编译器自带的头文件

        在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。

        前面我们已经看过 stdio.h 头文件,它是编译器自带的头文件。

        引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内容,

        因为这么做很容易出错,特别在程序是由多个源文件组成的时候。

        A simple practice in C 或 C++ 程序中,

        建议把所有的 常量、宏、系统全局变量、函数原型写在头文件中,在需要的时候随时引用这些头文件。

17.1 引用头文件的语法

        使用预处理指令 #include 可以引用用户和系统头文件。它的形式有以下两种:

#include <file>

        这种形式用于引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。

        在编译源代码时,可以通过 -I 选项把目录前置在该列表前。

#include "file"

        这种形式用于引用用户头文件。它在包含当前文件的目录中搜索名为 file 的文件。

        在编译源代码时,可以通过 -I 选项把目录前置在该列表前。

17.2 引用头文件的操作

        #include 指令会指示 C 预处理器浏览指定的文件作为输入。

        预处理器的输出包含了已经生成的输出,被引用文件生成的输出以及 #include 指令之后的文本输出。

17.2.1 只引用一次头文件

        如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。

        为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,

#ifndef HEADER_FILE
#define HEADER_FILE


the entire header file file


#endif

        这种结构就是通常所说的包装器  #ifndef。

        当再次引用头文件时,条件为假,因为 HEADER_FILE 已定义。

        此时,预处理器会跳过文件的整个内容,编译器会忽略它。

17.2.2 有条件引用

        有时需要从多个不同的头文件中选择一个引用到程序中。

        例如,需要指定在不同的操作系统上使用的配置参数。

        可以通过一系列条件来实现这点,如下:

#if SYSTEM_1
   # include "system_1.h"
#elif SYSTEM_2
   # include "system_2.h"
#elif SYSTEM_3
   ...
#endif

        但是如果头文件比较多的时候,这么做是很不妥当的,预处理器使用宏来定义头文件的名称。这就是所谓的有条件引用。

        它不是用头文件的名称作为 #include 的直接参数,只需要使用宏名称代替即可:

 #define SYSTEM_H "system_1.h"
 ...
 #include SYSTEM_H

        SYSTEM_H  会扩展,预处理器会查找 system_1.h,就像 #include 最初编写的那样。

        SYSTEM_H  可通过 -D 选项被 Makefile 定义。

非常感谢您的支持!创作不易,转发备注出处!

自用展示内容,不定期更新维护内容,让我们把 C开发 变得更专业。

十年开发基本功,常年开班收徒(一年学徒制度),每年10个名额。

商业合作加微信,项目接包与外包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值