Difference between <include.hpp> and “include.hpp”
我是C++新手。
使用"和">包含C++头文件有什么不同?
我试图使用一些头文件形成一个开放源码库。该库中的所有头文件都使用<>。现在,当我在头文件中做同样的操作时,它在编译时失败了。
<>首先在头文件的头路径中查找头文件,而"首先在文件的当前目录中查找头文件"。
这种区别在很大程度上是由实现定义的;
实际上,我认识的所有编译器都使用
我不知道图书馆发生了什么事。通常情况下,使用第三方库时,必须添加一个或多个
库文件1.hpp:
1 | #include"Subdir/LibraryFile2.hpp" |
库文件2.hpp:
1 | #include"LibraryFile3.hpp" |
您将告诉编译器查找头文件(使用EDOCX1[22]选项)在类似于
在编译器路径中查找
在UNIX系统上,默认情况下,路径包含
例如,如果您有文件
编写
#include"include/test.h" ,它将相对地从编译文件的目录中查找。编写
#include ,但这次需要向编译器指定-Iinclude ,以便将./include 目录添加到编译器的路径中。
但是,请注意,有些编译器接受用于查找路径的
<>在默认目录中查找include files,"在当前目录中查找,而不是在默认目录中查找
引号表示从本地文件夹中包含,而<>表示从使用g++或msvc标志或正在使用的任何编译器或系统头指定的其他目录中包含。
这个问题是问题21593的副本。以上答案均不完全正确。与许多程序员一样,我使用了非正式的惯例,即对特定于应用程序的文件使用"myapp.hpp"表单,对库和编译器系统文件使用表单,即/i和include环境变量中指定的文件。但是,C标准规定搜索顺序是特定于实现的。
这是为了您的方便而复制的MSDN解释)。
Quoted form
The preprocessor searches for include files in this order:
1. In the same directory as the file that contains the #include statement.
2. In the directories of the currently opened include files, in the reverse order in which
they were opened. The search begins in the directory of the parent include file and
continues upward through the directories of any grandparent include files.
3. Along the path that's specified by each /I compiler option.
4. Along the paths that are specified by the INCLUDE environment variable.Angle-bracket form
The preprocessor searches for include files in this order:
1. Along the path that's specified by each /I compiler option.
2. When compiling occurs on the command line, along the paths that are specified by the INCLUDE
environment variable.
包含一个使用
在编译时定义包含文件夹: