Jue*_*gen 5 c++ header-files include-path
假设我们有两个头文件:/directory1/A.hpp和directory2/A.hpp.这两个标题的内容是不同的!
我们的构建目标A.cpp需要directory1和directory2包含路径,因为两个目录中还有其他所需的头文件.
现在,A.cpp有一个#include "A.hpp"声明.
A.hpp预处理器选择哪个版本?
如果一个人使用第三方软件,那么这种情况可能会发生吗?
Rei*_*ica 10
在这种情况下会发生什么取决于有问题的编译器(请参阅您使用的编译器的文档).
像这样的情况是使用"不合格"标题名称通常是个坏主意的原因.始终构建包含目录,以使路径的一部分成为名称的必要组件.例如
#include <boost/preprocessor.hpp>
#include <gl/GL.h>
Run Code Online (Sandbox Code Playgroud)
代替
#include <preprocessor.hpp>
#include <GL.h>
Run Code Online (Sandbox Code Playgroud)
带双引号的include伪指令以文本形式粘贴引用的文件。文件路径被认为是相对于源文件位置而言的。
因此,如果您有#include "directory1/A.hpp",它将包括明显的一个。如果是#include <A.hpp>或#include "A.hpp",则取决于哪个首先出现在搜索路径中。
通常,您应该使用特定的描述性名称来防止争用。以与使用C ++名称空间相同的方式使用目录已经足够了。看一下libxml ++和gtkmm之类的库的结构。