使用“”或<>

问题描述 投票:0回答:6

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

#include "boost/tuple/tuple.hpp"

而不是

#include <boost/tuple/tuple.hpp>

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

那么原因是什么呢?

c++ coding-style c-preprocessor conventions
6个回答
7
投票

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


5
投票

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


4
投票

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

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


4
投票

使用 <...> 来增强。这不是您的代码。除非你的代码是boost。

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


0
投票

来自msdn

引用表格

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

角括号形式

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


0
投票

您是在问两种包容风格的区别是什么,还是 Boost 的基本原理?由于其他人已经谈到了差异,我将添加我对后一个问题的看法:

总的来说,我不认为这两者更正确。这取决于您的项目的依赖关系的结构。例如,在我的项目中,我通常将 Boost 等的相关部分包含在项目的子目录中,因此倾向于使用

#include ""
形式。如果您想从更全球的位置获取 Boost 安装,您会更喜欢
#include <>
形式。

© www.soinside.com 2019 - 2024. All rights reserved.