C++ 20 模块:10 个实用技巧

  1. 模块化思维
    将大型项目拆分成多个模块,每个模块只暴露必要的接口,减少编译时间。

  2. 使用 export module
    在模块文件顶部写 export module MyLib;,随后所有 export 声明的内容都会被导出。

  3. 导出类与函数

    export class MyClass {
        int x;
    public:
        export MyClass(int v) : x(v) {}
        export int get() const { return x; }
    };

    只需在类内部加 export,其成员函数默认也可导出。

  4. 导出预编译头
    通过 export import std; 可以一次性引入标准库,避免每个源文件重复编译。

  5. 避免头文件互相包含
    模块化后,#include 主要用于导入模块,而不是包含传统头文件。

  6. 使用 import 而非 #include

    import MyLib;

    这样编译器只会处理一次模块定义,提升编译速度。

  7. 管理依赖关系
    模块文件内部使用 import 明确依赖,编译器会自动解析并缓存结果。

  8. 跨平台兼容
    模块规范兼容主流编译器(Clang、GCC、MSVC),但请检查其版本支持情况。

  9. 与旧代码共存
    可以为旧头文件创建“包装模块”,保持旧接口,同时享受模块化好处。

  10. 持续集成 CI 配置
    在 CI 中添加 -fmodules-ts 或对应编译器标志,确保模块在所有环境下正常构建。

通过这些技巧,你可以在 C++ 20 中更高效、更安全地使用模块,显著提升大型项目的构建性能和代码可维护性。

发表评论