Dou*_*ore 19 c c++ directory-structure
我知道在C/C++项目中,将头文件放在一个目录中是很常见的,例如,include在一个单独的目录中实现src.我一直在玩弄不同的项目结构,我想知道是否有任何客观原因,或者仅仅是惯例?
Luc*_*ore 29
约定是其中一个原因 - 大多数时候,通过有效的抽象,你只关心界面,并希望只是看看标题.
这不是唯一的原因.如果您的项目是按模块组织的,那么您很可能必须在不同的模块中包含一些标题,并且您希望清除include目录中的其他"噪声"文件.
此外,如果您计划重新分发模块,则可能需要隐藏实现细节.因此,您只提供标题和二进制文件 - 并且从单个文件夹中分发标题而其他内容则更简单.
还有一个我更喜欢的替代方案 - 公共头文件放在一个单独的文件夹中(这些文件夹包含最小的接口 - 没有任何实现细节可见),私有头文件和实现文件是分开的(可能但不一定在单独的文件夹中) .
我更喜欢把它们放在同一个目录中.原因:
接口规范文件和实现该接口的源文件属于项目的同一部分.说你有subsystemx.然后,如果您将subsystemx文件放在subsystemx目录中,subsustemx则是自包含的.
如果有很多包含文件,确保您可以做subsystemx/include和subsystemx/source,但后来我说,如果你把定义class Foo中foo.hpp,和foo.cpp你当然想在一同看见他们两个(或至少要做这么容易的可能性)目录列表.查找与之相关的所有文件foo
ls foo*
Run Code Online (Sandbox Code Playgroud)
查找所有实施文件:
ls *.cpp
Run Code Online (Sandbox Code Playgroud)
查找所有声明文件:
ls *.hpp
Run Code Online (Sandbox Code Playgroud)
简单干净.
它可以保持文件夹结构更清晰.标题和源文件明显不同,并且用于不同的事情,因此将它们分开是有意义的.从这个角度来看,问题基本上与" 为什么源文件和文档进入不同的文件夹 "相同?计算机是你放什么东西在文件夹和你做什么高度无关,文件夹-大部分-只是一个方便的抽象的,因为我们人类解析,专卖店的方式,和召回信息.
还有一个事实,即头文件中还是有益的,你已经建立了即使,也就是说,如果你正在建设一个图书馆,有人想使用该库,他们需要的头文件-而不是源文件-所以它使捆绑这些头文件 - 抓住内容bin和内容,include而不必筛选src- 更容易.
| 归档时间: |
|
| 查看次数: |
21873 次 |
| 最近记录: |