c++ - 项目之间应该如何依赖?

标签 c++ visual-studio dependencies project-management projects-and-solutions

项目应该相互独立到什么程度?

我有一个非常大的 Visual Studio 解决方案,其中所有项目都相互依赖。我无法从解决方案中取出单个项目并将其添加到另一台计算机的另一个解决方案中,因为它们都相互关联。

我做的事情正确吗?


例如;

考虑我的这三​​个项目(磁盘文件、数据转换器和数学 - .h 和 .cpp 文件对是 C++ 类;我将通过它们各自的名称来提及它们):

The Solution
|
|---- Disk File
|     |
|     |---- BinaryFile.h, BinaryFile.cpp
|     |---- TextFile.h, TextFile.cpp
|
|---- Data Converter
|     |
|     |---- Utf8.h, Utf8.cpp
|     |---- XmlParser.h, XmlParser.cpp
|     |---- StringFormatter.h, StringFormatter.cpp
|
|---- Math
      |
      |---- Plotter2D.h, Plotter2D.cpp
      |---- Matrix.h, Matrix.cpp
  • TextFile 使用 Utf8 进行字符编码。这使得 Disk File 依赖于 Data Converter
  • XmlParser 使用 TextFile。这使得 Data Converter 依赖于 Disk File
  • Plotter2D 使用 TextFile 转储一些数据以与外部软件一起使用,Matrix 在其 中使用一些字符串格式化工具>::ToString() 方法。这使得 Math 依赖于 Disk FileData Converter

这只是几个类之间依赖关系的一个例子。事实上,我的解决方案中有更多的文件。这是一团乱七八糟的代码依赖关系。

我将与我的一位 friend 开始一个项目。他的解决方案中需要我的 Math 项目。但他要使其适应自己的解决方案并不容易,因为它会给出很多关于这些依赖项的编译器错误。

这个依赖量正常吗?我做得对吗?我在每个需要的项目中保留所有常用文件的拷贝怎么样(这可能很愚蠢,我只是问问)?

我需要你的建议。

最佳答案

总会有这样的依赖关系,但您可以使用一些方法避免它们:

  1. 要通过不包括跨模块 header 来保持 .h 文件的独立性,请在此处使用前向声明并在 .cpp 文件中使用实际的 header 文件。

  2. 对于要在函数中传递的其他 header 中定义的枚举,可以使用空指针来传递和验证 .cpp 文件中的值。

  3. 您也可以使用“extern C”函数。

关于c++ - 项目之间应该如何依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586115/

相关文章:

c# - 使用 Xamarin for Visual Studio 调试正在运行的 Android 应用程序

c# - 如何将字符串拆分为多个值?

gradle - 带有Nexus工件存储库的多项目Gradle构建

c++ - 使用 std::unique_ptr 反转二叉树

c++ - 使用 C++ 容器最小化内存开销(std::map 和 std::vector 太贵了)

c# - C# 测试中的超时

android - native 库可以作为依赖项包含在 Android Studio 项目中吗?

gradle - 查看存储库中是否存在Gradle构建中工件的较新版本

c++ - cppcheck 警告列表初始化中指向局部变量的指针

C++ bool 问题(两个数组之间的比较)