用C / C ++编写库时,哪种类型的#include(“”或<>)

时间:2018-11-21 10:28:11

标签: c++ c dll include lib

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

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

我感觉一旦安装了库之后就应该使用尖括号,以便检查系统目录,但是在构建库时,我需要使用引号,以便检查本地目录,并且我不会选择系统目录中的最新版本。

我知道#include <filename>#include “filename”的不同版本是什么意思。我在问哪种情况适合写图书馆,为什么要写图书馆。

3 个答案:

答案 0 :(得分:1)

如果工作目录中的标题,则应使用"" 但, 如果系统路径中的标头或包含路径中的标头,则应使用<>.

答案 1 :(得分:1)

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

因此,按照惯例,将尖括号用于标准include,将双引号用于其他所有内容。这样可以确保(在不建议使用的情况下)您具有与标准标头同名的本地标头,在每种情况下都将选择正确的标头。

有关更多详细信息,请参阅SO解答

Difference between angle bracket < > and double quotes " " while including header files in C++?

答案 2 :(得分:0)

如果您使用"...",编译器将首先搜索本地目录,然后搜索系统目录。

如果您使用<...>,则编译器将搜索系统目录。

用户库通常将与程序一起驻留。因此,您可以使用"..."

在任何情况下,您都可以使用IDE或制作文件来添加其他搜索路径。