为什么要在 C 和 C 项目中创建 include/ 目录?

新手上路,请多包涵

When I work on my personal C and C++ projects I usually put file.h and file.cpp in the same directory and then file.cpp can reference file.h 带有 #include "file.h" 指令。

但是,通常会发现所有 .h 文件都放在 include/ 目录中的库和其他类型的项目(如 linux 内核和 freeRTOS),而 .cpp 文件保留在另一个目录中。在这些项目中, .h 文件也包含在 #include "file.h" 中,而不是 #include "include/file.h" 如我所愿。

我对这一切有一些疑问:

  1. 这种文件结构组织的优点是什么?
  2. 为什么 .h 内的文件 include/ 包含在 #include "file.h" 而不是 #include "include/file.h" 中?我知道真正的技巧在一些 Makefile 中,但是这样做真的更好,而不是明确(在代码中)我们想要包含的文件实际上在 include/ 目录中?

原文由 user4546925 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 569
1 个回答

这样做的主要原因是编译的库需要标头才能被最终用户使用。按照惯例, include 目录的内容是公开供公众使用的标头。源目录可能有供内部使用的标头,但这些标头 并不 意味着与已编译的库一起分发。

因此,在使用库时,您链接到二进制文件并将库的 include 目录添加到构建系统的头文件路径中。同样,如果您将编译的库安装到集中位置,您可以知道哪些文件需要复制到中心位置(编译的二进制文件和 include 目录)以及哪些文件不需要(源目录等)。

原文由 Nicol Bolas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题