包含本地文件

时间:2012-02-29 17:40:44

标签: c++ boost include c-preprocessor

我需要在项目中嵌入Boost标头。

根据this question,建议使用双引号(#include "boost/filesystem.hpp"),以便在安装时不使用系统版本的Boost。

根据C ++标准和流行的实现,当这些本地标题包含带尖括号的其他标题(看起来是Boost标题中的代码样式)时,行为是什么?

1 个答案:

答案 0 :(得分:4)

我见过的大多数“流行”实现都包含引号中的标题,相对于源文件的路径,使用相对于包含的指定搜索路径搜索的尖括号进行编译。正如该线程中所提到的,编译器如何搜索引号中包含的头文件与括号相对的实际区别纯粹是实现定义的。

我不会尝试使用像boost这样的库的引号,希望避免因为你指出的具体原因而与另一个已安装的版本发生冲突。它包括通常带有尖括号的相对标题,因此如果安装了两个,则试图避免使用错误版本的boost,这可能是通过在您的结尾处在引号中包含boost标题来解决的。

相反,您应该查看为编译器指定的包含路径的优先级。

编辑:您还应该查看lib路径的优先级以及静态链接(感谢James Kanze的建议)。

  

根据C ++标准和流行的行为是什么   实现,当这些本地标头包含其他标头时   尖括号(看起来是Boost标题中的代码样式)?

通常情况下,如果您自己在尖括号中包含标题,则会出现完全相同的行为。