我正在用C ++写一个库。该库具有多个头文件和cpp文件,并且需要跨平台(Windows Visual Studio和Linux gcc)。构建后,库和标头将安装在系统目录中的某个位置,可以在同一计算机上的其他代码(例如Linux系统上的/ usr / local)中找到它们。
如果我的标题之一需要#include我的其他标题之一,那么我应该使用尖括号或引号吗?
我感觉一旦安装了库之后就应该使用尖括号,以便检查系统目录,但是在构建库时,我需要使用引号,以便检查本地目录,并且我不会选择系统目录中的最新版本。
我知道#include <filename>
和#include “filename”
的不同版本是什么意思。我在问哪种情况适合写图书馆,为什么要写图书馆。
答案 0 :(得分:1)
如果工作目录中的标题,则应使用""
但,
如果系统路径中的标头或包含路径中的标头,则应使用<>.
答案 1 :(得分:1)
使用尖括号时,编译器会在“包含路径”列表中搜索文件。 使用双引号时,它首先搜索当前目录(即正在编译的模块所在的目录),然后才搜索包含路径列表。
因此,按照惯例,将尖括号用于标准include,将双引号用于其他所有内容。这样可以确保(在不建议使用的情况下)您具有与标准标头同名的本地标头,在每种情况下都将选择正确的标头。
有关更多详细信息,请参阅SO解答
Difference between angle bracket < > and double quotes " " while including header files in C++?
答案 2 :(得分:0)
如果您使用"..."
,编译器将首先搜索本地目录,然后搜索系统目录。
如果您使用<...>
,则编译器将搜索系统目录。
用户库通常将与程序一起驻留。因此,您可以使用"..."
在任何情况下,您都可以使用IDE或制作文件来添加其他搜索路径。