假设我们有两个头文件:/directory1/A.hpp
和 directory2/A.hpp
。这两个 header 的内容不同!
我们的构建目标 A.cpp
需要 directory1
和 directory2
作为包含路径,因为在这两个目录中还有其他需要的头文件。
现在,在 A.cpp
中有一个 #include "A.hpp"
语句。
预处理器会选择哪个版本的A.hpp
?
如果使用第三方软件,是不是很可能会出现这样的情况?
最佳答案
在这种情况下会发生什么取决于所讨论的编译器(请参阅您使用的编译器的文档)。
像这样的情况是为什么使用“不合格”的 header 名称通常不是一个好主意的原因。始终构建您的包含目录,以将路径的一部分作为名称的必要组成部分。例如
#include <boost/preprocessor.hpp>
#include <gl/GL.h>
代替
#include <preprocessor.hpp>
#include <GL.h>
关于c++ - 不同包含路径中的相同头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832392/