-
模块化思维
将大型项目拆分成多个模块,每个模块只暴露必要的接口,减少编译时间。 -
使用
export module
在模块文件顶部写export module MyLib;,随后所有export声明的内容都会被导出。 -
导出类与函数
export class MyClass { int x; public: export MyClass(int v) : x(v) {} export int get() const { return x; } };只需在类内部加
export,其成员函数默认也可导出。 -
导出预编译头
通过export import std;可以一次性引入标准库,避免每个源文件重复编译。 -
避免头文件互相包含
模块化后,#include主要用于导入模块,而不是包含传统头文件。 -
使用
import而非#includeimport MyLib;这样编译器只会处理一次模块定义,提升编译速度。
-
管理依赖关系
模块文件内部使用import明确依赖,编译器会自动解析并缓存结果。 -
跨平台兼容
模块规范兼容主流编译器(Clang、GCC、MSVC),但请检查其版本支持情况。 -
与旧代码共存
可以为旧头文件创建“包装模块”,保持旧接口,同时享受模块化好处。 -
持续集成 CI 配置
在 CI 中添加-fmodules-ts或对应编译器标志,确保模块在所有环境下正常构建。
通过这些技巧,你可以在 C++ 20 中更高效、更安全地使用模块,显著提升大型项目的构建性能和代码可维护性。