【问题标题】:Building a modular library in C用 C 构建模块化库
【发布时间】:2018-08-29 16:53:39
【问题描述】:

我已经用 C 语言构建了一个库,但目前它非常庞大,并且有许多功能可用于不同的建议,例如:文件操作、数学函数等。

我想做的是将这个库拆分为所有不同的建议,但如果用户想要使用所有可以一次调用它(如果可能的话,idk)。

我的库名为 feg_tools。所以我现在使用它:

#include "feg_tools.h"

我想要一些我只称呼我需要的东西:

#include "feg_tools/mathematics_functions.h"
#include "feg_tools/file_manipulation.h"

或者如果我需要一切:

#include "feg_tools"

我也不知道如何像那样构建 Makefile。

【问题讨论】:

  • 头文件并不规定链接到什么代码。只需包含所有内容并让编译器对其进行排序,除非这会严重拖累性能。将共享库分块成一堆模块会导致不必要的复杂性。

标签: c modularization


【解决方案1】:

你需要创建一个名为feg_tools的文件夹,把你所有的库的.h (mathematics_functions.h,file_manipulation.h,...),然后你就可以使用它们了正如你在问题中所说的那样。

对于包含孔库,您需要一个包含库的所有 #include 指令的标头,这可能是,

feg_tools.h

#include "feg_tools/mathematics_functions.h"
#include "feg_tools/file_manipulation.h"
...

这里 feg_tools.h 位于 feg_tools 文件夹之外。

我不知道你是否这样做,机器人你也应该在每个.h文件中插入内容到#ifdef指令中,如下所示:

#ifdef FEG_TOOLS_XXX
//put here the content 
#endif //FEG_TOOLS_XXX

这是为了避免头文件的循环依赖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2011-05-05
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2013-11-24
    相关资源
    最近更新 更多