C++现代教程七之模块

发布时间:2026/11/2 10:45:03
C++现代教程七之模块
优点
  1. 编译时间减少:
  2. 模块消除了重复解析和编译头文件的需要,从而显著减少了编译时间。特别是在大型项目中,这一点尤为重要。
  3. 更好的封装性:
  4. 模块允许更严格的封装,可以明确地控制哪些符号对外可见。这有助于减少命名冲突和不必要的依赖。
  5. 减少命名冲突:
  6. 模块通过命名空间和模块名称来管理符号,减少了全局命名空间中的命名冲突问题。
  7. 提高代码可读性和维护性:
  8. 模块化的代码结构更加清晰,便于理解和维护。每个模块都有明确的职责和接口,使得代码组织更加合理。
  9. 更好的工具支持:
  10. 模块化的设计使得 IDE 和其他开发工具可以更好地支持代码导航、重构和分析。
  11. 减少宏的使用:
  12. 模块减少了对宏的依赖,因为模块提供了更强大的抽象和封装机制
main.ixx 接口
export module api; import :part1; import :part2; export char const* hello(); export { int one(); int zero(); } export namespace hi{ const char* english(); const char* french(); }
main.cppm 实现
module api; //module :private; 不可见 char const* hello() { return "hello"; } char const* world() { return "world"; }
part1.cppm 分区一
export module api:part1; int one() { return 1;} int zero() { return 0;}
part2.cppm 分区一
export module api:part2; import :part1; import <string>; namespace hi{ const char* english() { return "en";} const char* french() { return "fr";} const char* test() { return std::to_string(one()).c_str(); } }
main.cpp
import <iostream>; import api; void print(std::string_view msg) { std::cout << msg << std::endl; } void print(int val) { std::cout << val << std::endl; } int main() { print(hello()); print(one()); print(hi::english()); }
输出

hello
1
en

参考

Overview of modules in C++ | Microsoft Learn

C++20 Module 使用指南 - ihnfsa’s blog

C++现代教程六_#include <iostream> using namespace std; typedef s-CSDN博客


创作不易,小小的支持一下吧!