C++:预处理/文件包含处理

来自Peter_Matthew的Wiki
Peter Matthew讨论 | 贡献2021年2月25日 (四) 15:47的版本

所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。
C++提供了#include命令用来实现“文件包含”的操作。

文件包含的作用

“文件包含”的作用是将一份代码复制到另一份代码中,例如

a.cpp b.cpp 使用了“文件包含”的b.cpp
代码片段A 代码片段A
代码片段B
#include"a.cpp"
代码片段B

“文件包含”可以节省程序设计人员的重复劳动时间。

#include命令的应用很广泛,绝大多数C++程序中都包括#include命令。现在,库函数的开发者把这些信息写在一个文件中,用户只需将该文件“包含”进来即可(如调用数学函数的,应包含cmath文件),这就大大简化了程序,写一行#include命令的作用相当于写几十行、几百行甚至更多行的内容。这种常用在文件头部的被包含的文件称为“标题文件”或“头部文件”。

头部文件一般包含以下几类内容:

  1. 对类型的声明。
  2. 函数声明。
  3. 内置(inline)函数的定义。
  4. 宏定义。用#define定义的符号常量和用const声明的常变量。
  5. 全局变量定义。
  6. 外部变量声明。如entern int a;
  7. 还可以根据需要包含其他头文件。

两种形式

“文件包含”处理的#include命令的一般形式为

#include<文件名>

#include"文件名"

#include<iostream>

#include"iostream"

都是合法的。

其区别是#include<文件名>会直接按系统指定的目录检索,然后再在文件所在目录检索;#include"文件名"会先在文件所在目录检索,然后再按系统指定的目录检索。