为什么tuple documentation说要使用,例如:
#include "boost/tuple/tuple.hpp"
而不是
#include <boost/tuple/tuple.hpp>
我知道我的代码不太可能有一个名为“boost / tuple / tuple.hpp”的文件, 但使用include&lt;&gt;显然不要查看curent目录。
那是什么原因?
答案 0 :(得分:7)
使用&lt;&gt;并不意味着“不要查看当前目录” - 这意味着查看实现定义的位置,然后查看其他地方,也实现定义。这两者中的任何一个或两者都不是当前目录。这是C ++标准中比较无用的部分之一。
答案 1 :(得分:5)
<somefile>
的历史意义是查看系统标准位置。使用"somefile"
表示查看当前目录以及其他一些地方。
答案 2 :(得分:4)
Afaik的原因是区分属于应用程序的标头和来自外部库的标头。我不能说为什么他们没有使用这个惯例。这只是一个惯例,而不是一个规则。
也许有人应该向Boost维护者提出这个问题?
答案 3 :(得分:3)
使用&lt; ...&gt;为了提升。这不是你的代码。除非你的代码得到提升。
使用“....”作为头文件,这在每个C ++程序中都不可避免。这适用于读者,而不适用于编译器。
答案 4 :(得分:0)
来自msdn:
引用表格
此表单指示预处理器 在同一个中查找包含文件 包含的文件的目录 #include语句,然后在 任何文件的目录 包含(#include)该文件。该 预处理器然后搜索 / I编译器指定的路径 选项,然后沿着指定的路径 INCLUDE环境变量。
角括号表格
此表单指示预处理器 首先搜索包含文件 沿着/ I指定的路径 编译选项,然后,编译时 从命令行,沿着路径 由INCLUDE环境指定 变量
答案 5 :(得分:0)
您是在问这两种包容方式之间的差异,还是Boost的基本原理?由于其他人已就这种差异发表过意见,我将在后一个问题上加以补充:
总的来说,我认为两者都不正确。这取决于您的项目在其依赖关系方面的结构。例如,在我的项目中,我通常在项目的子目录中包含Boost等的相关位,因此倾向于选择#include ""
形式。如果您想从更全球的位置选择Boost安装,您更喜欢#include <>
表单。