我对预编译头和模块之间的区别感到困惑。一个比另一个有什么优势?我已经阅读了这两种软件的微软文档,但没有多大帮助。
- 预编译头文件 <
- 模块/gh>
模块的一个优点是它们是一个标准特性。所有c++ 20编译器都必须按照语言中描述的方式实现它们。预编译头文件不是标准特性。并不是所有的编译器都必须有这个特性,并且每个编译器都以自己的方式实现它们,而这些方式不一定与其他编译器兼容。
模块相对于头文件的一个优点是它们封装了宏。头文件的一个(很少有用的)优点是它们可以"导出"。宏。
模块相对于头文件的一个优点是,您可以显式控制导出的名称,这允许封装实现细节。
在撰写本文时,模块的一个缺点是到目前为止只有MSVC完全实现了它们。