1

从表面上看,使用私有模块片段来分离接口和实现看起来优于在不同的源文件中分离模块接口和实现单元,因为在使用私有模块片段时您只需要管理单个源文件。

但是使用私有模块片段是否比在不同的源文件中分离模块接口/实现单元更好?有哪些取舍?

4

1 回答 1

2

基于限制,权衡是非常明显的。私有模块片段 (PMF) 只能出现在主模块接口单元中,并且不能有其他模块单元对具有 PMF 的模块做出贡献。这意味着使用 PMF 的主要缺点是您只能将模块的所有内容放在一个文件中。

从广义上讲,模块导入的性能并不取决于模块中有多少东西。因此,将很多东西放入一个模块中是一个不错的主意。但是将所有这些东西放在一个文件中可能会冗长且难以维护。随着库变得越来越大,将它们分成多个文件通常更有利于组织。

PMF 构造主要是为了便于分发提供模块和非模块构建的库。主要代码位于(大部分)常规头文件和源文件中,用于构建非模块版本。对于模块版本,您只有一个模块单元。在全局片段中,您#include的接口头文件使用的任何头文件属于您的库(标准库头文件、依赖库等)。在该模块单元的范围内,您#include将所有接口标题都放在一个大块export{}中。私有模块片段可以#include包含用于编译库的所有 .cpp 文件,因此编译器可以只构建一个模块文件并获取所有内容。

于 2022-01-16T21:35:57.927 回答