C++ 中 #include 头文件有两种形式,一种是使用尖括号<>,一种是使用双引号""
一、关于 #include首先,#include 为预处理语句,那什么是预处理语句呢?
预处理语句最明显的标志是一些以#开始的特殊语句。
例如:#include、#define、#if 等就是预处理语句。在程序的其它编译处理(代码生成等)之前,先进行这些语句的处理。
在编译工具中,有一个叫预处理器的东西,预处理器发现 #include 指令后,就会进行一些预处理操作。
二、#include 定义 2.1 #include <xxx.h>系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。
2.2 #include "xxx.h"用户自定义的头文件用双引号括起来,编译器首先会在用户目录下查找,然后再到 C++ 的安装目录(Linux 中可以通过环境变量来设定)中查找,最后在系统文件中查找。
这两种写法都是正确的写法,但它们却是有区别的。我们知道 C/C++ 已经有一些编写好的头文件(比如标准函数库等)。当我们使用 #include <XXX> 命令时,编译器就到系统文件夹里去找对应的头文件。
显然,用这种写法去寻找一个我们自己编写的头文件就会出错,因为我们自己写的头文件一般情况下并不在系统文件夹里。所以包含 C++ 提供的头文件时,应该使用尖括号。
相反地,#include "XXX.h" 命令则是先在当前文件所在的目录搜索是否有符合的文件,如果没有再到系统文件夹里去找对应的头文件。因此,无论这个文件是 C++ 提供的还是自己编写的,使用 #include "XXX.h" 命令一定是正确的。