为什么元组文档说要使用,例如:
#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"
意味着查看当前目录以及其他一些地方。
Afaik 的原因是区分属于应用程序的标头和来自外部库的标头。我不能说他们为什么没有使用这个约定。这只是一个惯例,而不是规则。
也许有人应该向 Boost 维护者提出这个问题?
使用 <...> 来提升。这不是您的代码。除非你的代码是提升的。
对头文件使用“....”,这是每个 C++ 程序中不可避免的。这是给读者的,不是给编译器的。
来自msdn:
报价单
这种形式指示预处理器在包含#include 语句的文件的同一目录中查找包含文件,然后在包含(#include)该文件的任何文件的目录中查找。然后预处理器沿着 /I 编译器选项指定的路径搜索,然后沿着 INCLUDE 环境变量指定的路径搜索。
尖括号形式
这种形式指示预处理器首先沿着 /I 编译器选项指定的路径搜索包含文件,然后在从命令行编译时,沿着 INCLUDE 环境变量指定的路径搜索。
你是在问这两种包容方式之间的区别是什么,还是为了 Boost 的理由?由于其他人已经谈到了差异,我将添加我对后一个问题的看法:
总的来说,我不相信两者都更正确。这取决于您的项目相对于其依赖项的结构。例如,在我的项目中,我通常在项目的子目录中包含 Boost 等相关部分,因此倾向于使用这种#include ""
形式。如果您想从更全球的位置获取 Boost 安装,您会更喜欢这种#include <>
形式。