给出以下目录结构:
注意有两个名为System-Libraries.hpp
我目前包含的方式是:
#include "System-Libraries.hpp"
显然这里存在歧义。这个项目编译并运行,因此系统似乎正在寻找正确的标题,但我不认为这是因为定义的行为我觉得我很幸运。
CMake,Make和g ++如何确定哪两个文件将用于给定cpp的编译?
注意我不是在问如何修复它,修复它涉及更改标题名称以使它们不同或包含相关路径,这不是我担心的。我想知道为什么CMake和g ++都没有抱怨这两个文件被命名为相同并被包含在同一个最终的可执行文件中。
答案 0 :(得分:1)
预处理器按此顺序搜索包含文件:
引用表格:
角括号形式: