我正在构建一系列 C 库来改进大型代码库中的代码分离。
我想使用最少的公共库接口强制执行严格的分离。
这些库由几个模块(c + h 文件)组成,其中一些具有内部引用。
目前,库头文件既包含与库接口函数相关的原型,也包含在库内部(在库模块之间)使用的公共函数。
我想以某种方式过滤掉不应通过库接口访问的公共接口(库模块之间使用的内部公共函数)。
我提出了以下可能的解决方案,但我不相信其中任何一个都是最佳的:
- 为每个模块维护两个头文件。一个包含库中使用的内部接口的头文件和一个包含库用户可以使用的公共库接口的头文件
- 使用 include guards + ac 预处理器过滤掉头文件的部分 - 生成的预处理头文件仅包含库公共函数
- 编写自定义脚本以使用 c 样式注释根据某些语法过滤头文件,例如 // Lib func \n void function1 ( int test ); 对于这个解决方案,我将使用一些标准工具来解析 c 头文件(例如 clang / LibClang)。
我希望这是构建库的标准“问题”,并想知道为什么在 SOF 或 google 上找不到任何关于该主题的内容。
任何有关如何有效实现这一目标的建议都将受到高度赞赏。
谢谢