gpt4 book ai didi

c++ - c/c++如何进行模块化开发?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:47 25 4
gpt4 key购买 nike

我只能处理最简单的情况,当只有 2 个模块 AB

A 依赖于 B,因此我将 B 构建为库并包含 B 的 header A 中的文件,在构建 A 时也链接到 B 库。

AB 相互依赖时,这将不起作用,当模块数量增加时更糟..

那么在c/c++中进行模块化开发的一般方式是什么?

更新

抱歉,我的标题好像不准确,改写后的版本是:如何将一个模块分成多个.h.cpp文件(不是一个) ?

最佳答案

如果 A 和 B 是相互依赖的,则您不能孤立地部署它们中的任何一个。因此,您实际上只有一个模块,而不是两个。 (你可以重构你的模块,将通用的东西提取到第三个模块 C 中,从而使 A 和 B 都依赖于 C,但不相互依赖。)

设计良好的项目不应包含循环模块依赖项。这保证了其模块之间始终存在合理的构建顺序。

更新

how can I divide a module into many .h and .cpp files(not a single one)?

基本原则与模块级别非常相似:避免循环依赖和重复定义。 @Felix 已经提到了这方面的基本工具:前向声明和包含守卫。我也可以支持@kotlinski 对 Larman 书的推荐,以便更深入地理解该主题。

学习良好的设计需要实践,所以如果您的第一种方法看起来不完美,请不要放弃 :-) 在 C++ 中,一个特别的痛苦是更改后的过度重新编译。为了尽量减少这种情况,努力确保您最依赖的事物(类、 header )是更改频率最低的事物。 IE。依赖于接口(interface)(抽象类),而不是具体的实现。

同时,努力保持逻辑分区(类/组件)和物理分区(头文件/cpp 文件)之间的健康关系。典型的方法是将每个类定义放入单独的头文件中,并将其实现(如果适用)放入单独的 cpp 文件中。但是,您可能更喜欢在单个 header 中定义紧密耦合的类(组件),以强调它们的逻辑关系。

关于c++ - c/c++如何进行模块化开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3548357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com