在 C++ 中,使用 #include “” 和 #include <> 引入的头文件是有区别的。
#include “” 会在当前源文件所在的目录和预处理器的包含路径中搜索头文件。
#include <> 会在预处理器的包含路径中搜索头文件。
预处理器的包含路径(即头文件的搜索路径)是由编译器决定的。在 g++ 编译器中,预处理器的包含路径包括:
使用 -I 选项指定的路径
编译器默认的系统头文件目录(/usr/include和/usr/local/include)
使用 -isystem 选项指定的路径
使用 #include “” 和 #include <> 最大的区别在于,使用 #include “” 的时候,头文件会在当前目录搜索,而使用 #include <> 时头文件不会在当前目录搜索。
使用 #include <> 时搜索的顺序为:
在编译器默认的系统头文件目录中搜索。
在使用 -I 选项指定的额外目录中搜索。
使用 #include “” 时搜索的顺序为:
在当前目录中搜索。
在使用 -I 选项指定的额外目录中搜索。
在编译器默认的系统头文件目录中搜索。
举个例子:
假设当前源文件所在的目录是 /home/user/src,且这个目录中有一个头文件 myheader.h。还假设系统的头文件目录是 /usr/include,并且 /usr/include 中有一个名为 myheader.h 的头文件。
那么,当使用 #include “myheader.h” 时,会优先在 /home/user/src 目录中搜索 myheader.h,如果没有找到,再在预处理器的包含路径中搜索。
而使用 #include <myheader.h> 时,会直接在预处理器的包含路径中寻找。