真金
给定以下目录结构:
注意有两个文件是如何命名的 System-Libraries.hpp
我目前包括的方式是:
#include "System-Libraries.hpp"
很明显,这里有歧义。这个项目编译并运行,所以系统目前似乎正在找到正确的标头,但我不希望这是因为定义的行为,我想我只是走运了。
CMake、Make 和 g++ 如何确定 2 个文件中的哪一个将用于给定 cpp 的编译?
注意我不是在问如何修复它,修复它涉及更改标题名称以使它们不同或包含包含的相对路径,这不是我担心的。我想知道为什么 CMake 和 g++ 都没有抱怨两个文件的名称相同并且包含在同一个最终可执行文件中。
蒙马鲁菲
预处理器按以下顺序搜索包含文件:
引用形式:
- 与包含#include 语句的文件位于同一目录中。
- 在当前打开的包含文件的目录中,按照打开它们的相反顺序。搜索从父包含文件的目录开始,并继续向上遍历任何祖父包含文件的目录。
- 沿着每个 /I 编译器选项指定的路径。
- 沿着由 INCLUDE 环境变量指定的路径。
角括号形式:
- 沿着每个 /I 编译器选项指定的路径。
- 当编译发生在命令行上时,沿着由 INCLUDE 环境变量指定的路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句