如果在使用 CMake 和 C++ 编译时两个头文件共享相同的名称会发生什么?

真金

给定以下目录结构:

在此处输入图片说明

注意有两个文件是如何命名的 System-Libraries.hpp

我目前包括的方式是:

#include "System-Libraries.hpp"

很明显,这里有歧义。这个项目编译并运行,所以系统目前似乎正在找到正确的标头,但我不希望这是因为定义的行为,我想我只是走运了。

CMake、Make 和 g++ 如何确定 2 个文件中的哪一个将用于给定 cpp 的编译?

注意我不是在问如何修复它,修复它涉及更改标题名称以使它们不同或包含包含的相对路径,这不是我担心的。我想知道为什么 CMake 和 g++ 都没有抱怨两个文件的名称相同并且包含在同一个最终可执行文件中。

蒙马鲁菲

预处理器按以下顺序搜索包含文件:

引用形式:

  • 与包含#include 语句的文件位于同一目录中。
  • 在当前打开的包含文件的目录中,按照打开它们的相反顺序。搜索从父包含文件的目录开始,并继续向上遍历任何祖父包含文件的目录。
  • 沿着每个 /I 编译器选项指定的路径。
  • 沿着由 INCLUDE 环境变量指定的路径。

角括号形式:

  • 沿着每个 /I 编译器选项指定的路径。
  • 当编译发生在命令行上时,沿着由 INCLUDE 环境变量指定的路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果在C#中值为false时,满足条件的方式和原因

来自分类Dev

如果在活性分析中要同时使用和覆盖变量,它的状态是什么

来自分类Dev

如果在程序中使用属性而不启用和绑定缓冲区,会发生什么情况?

来自分类Dev

如何使用CMake在Android构建上编译和共享两个C ++库

来自分类Dev

如果在if表达式和if语句中使用了相同的函数,是否会调用两次?

来自分类Dev

如果在同一指针(C)上两次使用malloc,会发生什么情况?

来自分类Dev

如果在Spring MVC中交换@service和@repository批注会发生什么

来自分类Dev

网络编程:如果在选择之后和发送之前网络断开连接会发生什么

来自分类Dev

如果在C中将分配的内存设置为NULL会发生什么

来自分类Dev

如果在C ++中擦除()一个元素,迭代器会发生什么?

来自分类Dev

如果在SQL搜索中使用where和or子句

来自分类Dev

用CMake编译CU和C文件

来自分类Dev

如何使用CMake使Python脚本编译和运行C ++程序

来自分类Dev

如果在Java中 如果在C ++中

来自分类Dev

如果在Java中 如果在C ++中

来自分类Dev

如果在Visual Studio和C#中,可以在内联中设置断点吗?

来自分类Dev

如果在父级和子级上指定了不同的区域属性值,会发生什么?

来自分类Dev

如果在使用 posix 路径时 lambda 内的条件

来自分类Dev

如果在使用LruCache类时不覆盖sizeof会发生什么

来自分类Dev

如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

来自分类Dev

如果在crontab文件中使用@reboot reboot,会发生什么情况?

来自分类Dev

如果在使用 jQuery 和 html 提交 html 表单时验证函数抛出错误,如何停止触发其他函数?

来自分类Dev

如果具有相同名称的字段从两个来源(类和接口)继承,将会发生什么

来自分类Dev

查找和删除文件,同时保留所有匹配的文件(如果在特定目录中)

来自分类Dev

如果在c ++构造函数中以错误的顺序初始化对象数据,会发生什么样的错误

来自分类Dev

实现和如果在减少功能

来自分类Dev

如果在枚举时覆盖ImmutableHashSet会发生什么?

来自分类Dev

如果在调试配置中编译,C++ hash_map.clear() 会很慢

来自分类Dev

如果在构造函数中使用super调用重写的方法会发生什么

Related 相关文章

  1. 1

    如果在C#中值为false时,满足条件的方式和原因

  2. 2

    如果在活性分析中要同时使用和覆盖变量,它的状态是什么

  3. 3

    如果在程序中使用属性而不启用和绑定缓冲区,会发生什么情况?

  4. 4

    如何使用CMake在Android构建上编译和共享两个C ++库

  5. 5

    如果在if表达式和if语句中使用了相同的函数,是否会调用两次?

  6. 6

    如果在同一指针(C)上两次使用malloc,会发生什么情况?

  7. 7

    如果在Spring MVC中交换@service和@repository批注会发生什么

  8. 8

    网络编程:如果在选择之后和发送之前网络断开连接会发生什么

  9. 9

    如果在C中将分配的内存设置为NULL会发生什么

  10. 10

    如果在C ++中擦除()一个元素,迭代器会发生什么?

  11. 11

    如果在SQL搜索中使用where和or子句

  12. 12

    用CMake编译CU和C文件

  13. 13

    如何使用CMake使Python脚本编译和运行C ++程序

  14. 14

    如果在Java中 如果在C ++中

  15. 15

    如果在Java中 如果在C ++中

  16. 16

    如果在Visual Studio和C#中,可以在内联中设置断点吗?

  17. 17

    如果在父级和子级上指定了不同的区域属性值,会发生什么?

  18. 18

    如果在使用 posix 路径时 lambda 内的条件

  19. 19

    如果在使用LruCache类时不覆盖sizeof会发生什么

  20. 20

    如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

  21. 21

    如果在crontab文件中使用@reboot reboot,会发生什么情况?

  22. 22

    如果在使用 jQuery 和 html 提交 html 表单时验证函数抛出错误,如何停止触发其他函数?

  23. 23

    如果具有相同名称的字段从两个来源(类和接口)继承,将会发生什么

  24. 24

    查找和删除文件,同时保留所有匹配的文件(如果在特定目录中)

  25. 25

    如果在c ++构造函数中以错误的顺序初始化对象数据,会发生什么样的错误

  26. 26

    实现和如果在减少功能

  27. 27

    如果在枚举时覆盖ImmutableHashSet会发生什么?

  28. 28

    如果在调试配置中编译,C++ hash_map.clear() 会很慢

  29. 29

    如果在构造函数中使用super调用重写的方法会发生什么

热门标签

归档