我是C++的新手.
使用""和<>包含c ++头文件有什么区别
我试图从开源库中使用一些头文件.使用<>包含该库中的所有头文件.现在,当我在头文件中执行相同操作时,它在编译时失败.
区别很大程度上是实施的定义; 所述"..."
形式应当首先看在其中包括它的文件位于的地方; 在<...>
没有.除此之外,两者都在一个实现定义的地方列表中,另外要求如果编译器没有"..."
在任何预期的位置找到一个表单,它会重新处理包,就像它是一个<...>
表单一样.
在实践中,我所知道的所有编译器都使用-I
或/I
选项构建一个位置列表,然后是一些"标准"和编译器定义的位置.此列表适用于<...>
; "..."
在与包含文件相同的目录中搜索,然后将其视为<...>
.(至少一些编译器也可以选择添加到列表中
"..."
.)
我不确定图书馆发生了什么.通常,在使用第三方库时,您必须添加一个或多个-I
或
/I
选项以告知编译器在何处查找其标头.完成后,您的代码和库代码都应找到所有必需的标头.我可以想到一个包可能在库头中工作的情况,而不是在你自己的头文件中,是一个
"..."
样式包含在库头中,它包含在另一个库头中,使用路径说明符,例如:
LibraryFile1.hpp:
#include "Subdir/LibraryFile2.hpp"
Run Code Online (Sandbox Code Playgroud)
LibraryFile2.hpp:
#include "LibraryFile3.hpp"
Run Code Online (Sandbox Code Playgroud)
您将告诉编译器-I
在类似的位置查找标题(使用选项)LibraryRoot/include
,这位于何处
LibraryFile1.hpp
; LibraryFile2.hpp
是相对于此位置,并且LibraryFile2.hpp
编译器找到,
LibraryFile3.hpp
因为它与包含它的文件位于同一目录中.LibraryFile3.hpp
但是,如果尝试直接包含,编译器将找不到它.
归档时间: |
|
查看次数: |
18104 次 |
最近记录: |