关于库中的标题,我看到两个选项,我不确定选择是否真的重要.假设我创建了一个库,让我们调用它foobar.请帮我选择最合适的选项:
有一个包含在库项目的根目录中,我们可以调用它foobar.h,其中包括库中的所有头文件,例如"src/some_namespace/SomeClass.h"等等.然后从库外部,在我想要使用任何与foobar库有关的文件中,只是#include <foobar.h>.
没有主要的包含,而只包括我要在我使用它们的地方所需的标题,所以我可能在源文件中有一大堆包含.由于我使用的命名空间有时甚至高达3,所以包括标题看起来像是一件苦差事.
我选择了选项1,因为它实现起来非常简单.OpenGL和许多其他库似乎都这样做,所以它似乎合情合理.但是,标准的C++库可以要求我在任何给定的文件中包含多个头文件,为什么它们只有一个头文件呢?除非是我和白痴,他们是独立的图书馆......
更进一步的答案,我认为提供两种选择是正确的,对吗?如果我想使用std :: string但是必须包含大量的头文件,我会非常恼火; 那会很傻.另一方面,如果#include当我想要使用大部分图书馆时必须输入大量的线条,我会感到恼火.
感谢所有向我提供前向标题的建议,这有助于我让丛林丛林变得更加复杂!:)
stl,boost和其他拥有大量头文件的人,他们为你提供了独立的工具,你可以独立使用它们.
因此,如果库是一组解耦工具,则必须选择将它们作为单独的部分包含在内,以及将整个库作为一个文件包含在内.
想一想你的图书馆将如何使用,并以这种方式组织它.如果有人在不使用整个东西的情况下不太可能使用一个小部件,那么将其构造为一个大的部件.如果一个小部件独立且有用,请确保您可以包含足够的部件.如果某些逻辑分组有意义,请为每个组创建包含文件.
与大多数编程问题一样,没有一个适合所有人的答案.
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |