C++20 模块化编程:如何使用 Modules 降低编译时间

在 C++20 之后,模块化编程(Modules)被正式纳入标准,成为提升编译效率和代码可维护性的强大工具。相较于传统的预处理头文件(#include),模块化提供了更快的编译速度、更好的命名空间管理以及更安全的编译单元。本文将介绍如何在实际项目中引入 C++20 Modules,配合 CMake 进行构建,并提供最佳实践与常见坑点。

1. 模块化编程的核心概念

1.1 模块导出(Export)

模块头(module interface unit)使用 `export module

;` 声明模块名,随后使用 `export` 关键字导出接口。所有导出的符号将在编译后生成一个 **模块接口文件**(.ifc)供其他翻译单元使用。 “`cpp // math_ops.ixx export module math_ops; export int add(int a, int b) { return a + b; } “` ### 1.2 模块使用(Import) 在其他翻译单元中,通过 `import ;` 导入模块,编译器会自动寻找对应的模块接口文件。 “`cpp // main.cpp import math_ops; #include int main() { std::cout T dot(const std::vector & a, const std::vector& b) { T sum = T{}; for (std::size_t i = 0; i #include int main() { std::vector v1{1.0, 2.0, 3.0}; std::vector v2{4.0, 5.0, 6.0}; std::cout

发表评论