1 #include 是什么
#include 是C/C++语言中的一条预处理指令,又叫做文件引用指令,用于引用需要的头文件(.h文件)。#include 指令的预处理过程非常简单,就是将头文件展开并将内容插入到该指令所在的位置,这与复制粘贴的效果相同。
2 <> 和 “” 的用法
在C/C++中,#include 预处理指令后面可以跟两种形式:
- #include <file>:
向外扩展,用于引用标准或系统头文件,如stdlib.h、stdio.h、iostream等,其通常在标准库或系统库目录中 - #include “file”:
向内扩展,用于引用自定义头文件,其通常在项目路径下的目录中
3 <> 和 “” 的搜索路径
编译器对 <> 和 “” 这两种方式引用的头文件的搜索路径和优先级是不同的,其具体如下:
- <>:
- 优先在系统路径查找
- 如果上一步找不到,则在编译器设置的include路径内查找
- 如果上一步找不到,则在系统的INCLUDE环境变量内查找
- “”:
- 优先在使用include指令的文件所在的路径内查找
- 如果上一步找不到,则在编译器设置的include路径内查找
- 如果上一步找不到,则在系统的INCLUDE环境变量内查找
- 如果上一步找不到,则在系统路径查找
由上可见,使用 “” 包含头文件时,编译器的查找范围更广,但是这并不意味着,不论是系统头文件,还是自定义头文件,一律用 “” 包含。因为编译器对头文件的查找顺序存在先后关系,如果项目路径下存在和系统目录下重名的头文件,那么编译器在第一次查找成功后,将以此为准,停止查找,最终造成头文件被覆盖的问题。因此,在引用标准函数库的头文件时,还是应该用 <> 包含,这样在查找时能一步到位,程序编译也能有更高的效率。