为什么元组文档建议使用以下语法:
#include "boost/tuple/tuple.hpp"
而非
#include <boost/tuple/tuple.hpp>
我知道我的代码中不太可能会有一个名为"boost/tuple/tuple.hpp"的文件,但是使用#include <>明确表示不要在当前目录中查找。
那么原因是什么呢?
为什么元组文档建议使用以下语法:
#include "boost/tuple/tuple.hpp"
而非
#include <boost/tuple/tuple.hpp>
我知道我的代码中不太可能会有一个名为"boost/tuple/tuple.hpp"的文件,但是使用#include <>明确表示不要在当前目录中查找。
那么原因是什么呢?
使用<>并不意味着“不要查找当前目录” - 它的意思是在一个实现定义的位置查找,然后再查找其他地方,也是实现定义的。这两个位置中的任何一个或两个都可能是当前目录。这是C++标准中比较无用的一部分。
<somefile>
的历史含义是查找系统标准位置。 对于 "somefile"
,它表示查找当前目录以及其他一些位置。
使用 <...> 来引用 boost 库。这不是你的代码。除非你的代码本身就是 boost 库。
使用 "...." 来引用头文件,这在每个 C++ 程序中都必须有。这是为了读者方便,而不是为了编译器。
来自msdn:
引用形式
这种形式指示预处理器在包含#include语句的文件所在目录中查找包含文件,然后在包含(#include)该文件的任何文件的目录中查找。然后,预处理器沿着由/I编译器选项指定的路径搜索,然后沿着INCLUDE环境变量指定的路径搜索。
尖括号形式
这种形式指示预处理器首先沿着由/I编译器选项指定的路径搜索包含文件,然后,在从命令行编译时,沿着由INCLUDE环境变量指定的路径搜索。
#include ""
形式。如果你想从一个更全局的位置获取Boost安装,你会更喜欢#include <>
形式。