2

为什么元组文档说要使用,例如:

#include "boost/tuple/tuple.hpp"

并不是

#include <boost/tuple/tuple.hpp>

我知道我的代码不可能有一个名为“boost/tuple/tuple.hpp”的文件,但使用 include <> 明确表示不要查看当前目录。

那么是什么原因呢?

4

6 回答 6

7

使用 <> 并不意味着“不要查看当前目录” - 它意味着查看实现定义的位置,然后查看其他地方,也就是实现定义。其中一个,两个或一个都不是当前目录。这是 C++ 标准中比较无用的部分之一。

于 2009-12-10T18:24:22.960 回答
5

的历史意义<somefile>是看系统标准的地方。它"somefile"意味着查看当前目录以及其他一些地方。

于 2009-12-10T18:21:53.667 回答
4

Afaik 的原因是区分属于应用程序的标头和来自外部库的标头。我不能说他们为什么没有使用这个约定。这只是一个惯例,而不是规则。

也许有人应该向 Boost 维护者提出这个问题?

于 2009-12-10T18:21:32.257 回答
4

使用 <...> 来提升。这不是您的代码。除非你的代码是提升的。

对头文件使用“....”,这是每个 C++ 程序中不可避免的。这是给读者的,不是给编译器的。

于 2009-12-14T12:03:21.307 回答
0

来自msdn

报价单

这种形式指示预处理器在包含#include 语句的文件的同一目录中查找包含文件,然后在包含(#include)该文件的任何文件的目录中查找。然后预处理器沿着 /I 编译器选项指定的路径搜索,然后沿着 INCLUDE 环境变量指定的路径搜索。

尖括号形式

这种形式指示预处理器首先沿着 /I 编译器选项指定的路径搜索包含文件,然后在从命令行编译时,沿着 INCLUDE 环境变量指定的路径搜索。

于 2009-12-10T18:22:51.520 回答
0

你是在问这两种包容方式之间的区别是什么,还是为了 Boost 的理由?由于其他人已经谈到了差异,我将添加我对后一个问题的看法:

总的来说,我不相信两者都更正确。这取决于您的项目相对于其依赖项的结构。例如,在我的项目中,我通常在项目的子目录中包含 Boost 等相关部分,因此倾向于使用这种#include ""形式。如果您想从更全球的位置获取 Boost 安装,您会更喜欢这种#include <>形式。

于 2009-12-10T18:23:43.860 回答