在 C/C 中编写库时使用哪种类型的#include ("" 或 <>)

新手上路,请多包涵

我正在用 C++ 编写一个库。该库有多个头文件和 cpp 文件,需要跨平台(Windows Visual Studio 和 Linux gcc)。构建时,库和头文件安装在某个系统目录中,同一台机器上的其他代码可以在其中找到它们(例如,Linux 系统上的 /usr/local)。

如果我的一个标题需要#include 我的其他标题之一,那么我应该使用尖括号还是引号?

我觉得安装库后应该使用尖括号以便检查系统目录,但是在构建库时我需要使用引号以便检查本地目录并且我不会选择过时的版本从系统目录。

我知道 #include <filename>#include “filename” 的不同版本是什么意思。对于编写库的情况,我在问哪个合适以及为什么。

原文由 Phil Rosenberg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 317
1 个回答

当您使用尖括号 时,编译器会在包含路径列表中搜索文件。 当您使用双引号 时,它首先搜索当前目录(即正在编译的模块所在的目录),然后才会搜索包含路径列表。

因此,按照惯例,标准包含使用尖括号,其他所有内容使用双引号。这可确保在(不推荐)您拥有与标准标头同名的本地标头的情况下,将在每种情况下选择正确的标头。

有关更多详细信息,请参阅以下 SO 答案

在 C++ 中包含头文件时尖括号 < > 和双引号“”之间的区别?

原文由 Rizwan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题