0

当我为我的小项目编写代码时,我通常会得到少量可重用的代码,这些代码将包含在未来的项目中。我一直在做的是将它们保存在 .h 文件中,并在整个文件中使用标准命名约定。例如,我用于读取和写入位图文件的代码称为 KBMP.h,每个结构和函数名称都以“KBMP_”开头。随着时间的推移,我收集了其中一些文件,这些文件在我的项目中定期用于诸如散列、矩阵操作、图形光栅化、噪声生成等任务。当我创建一个新项目时,我会拖入这些文件的副本和#include 他们。我的印象是,虽然这提供了我想要的模块化,但这是非常非常糟糕的编码实践。我应该怎么做?我知道在 SO 上有一个类似的问题,但它并不能完全回答我的情况。

4

2 回答 2

1

通常的方法是创建一个库,由您选择静态或动态。动态库的优点是,如果您更改或改进任何功能的功能,您之前链接到它的所有程序都将自动使用新版本。主要缺点是,如果您更改界面,您要么必须(1)返回并更改并重新编译所有使用已更改界面的旧程序,否则它们将停止工作,或者(2)您为了避免这个问题,你不得不费心制作不同版本的库。

您还可以选择创建多少个库。当然,您不希望将每个函数都放在自己的库中。传统观点认为库应该是连贯的,并且一个库中的所有功能都应该以某种方式相关,但是您不必再看 C 标准库就可以找到一个包含各种随机内容的库它。如果这仅用于您自己的目的,您也可以将其全部转储到一个库中,或者拥有一个用于所有图形功能的库,另一个用于数学功能,等等。

即使您只有一个大库,您也可以为相关功能使用不同的标头,这与 C 标准库的工作方式完全相同,因此您不必使用最终声明的每个标识符来污染程序的名称空间在图书馆的界面中。

于 2013-10-25T02:55:46.120 回答
1

我有一个类似代码的主库,在过去 25 年建立起来。我的几乎所有项目都使用了一些文件;其他仅在极少数中使用。它们都在我的库中,头文件在我的包含目录中。库不够大,我担心使用静态链接的开销,所以我只有静态(ar)库。

当我需要构建一个项目时,我会使用我安装的库来构建我的开发目的。当我分发代码时,我有一个发布系统,它将相关的库源(和头文件,以及测试代码,如果合适的话)以及每个项目的代码收集到一个可发布的 tar 球中。

于 2013-10-25T02:58:10.300 回答