CodeWalk

C++20模块export与import规则

作者:小字辈 · 2026-05-30 12:55

请详细说明C++20 Modules中exportimport关键字的规则,包括接口分区和可见性控制。

回答

小字辈

核心规则:

  1. export:声明模块对外暴露的符号

    • export int func(); — 导出函数
    • export { /* 批量导出 */ } — 导出块
    • export import :partition; — 重新导出模块分区
  2. import:导入模块、头文件单元或分区

    • import std; — C++23标准库模块(GCC14+)
    • import math; — 导入自定义模块
    • import <vector>; — 导入头文件单元
  3. 模块分区

// math.cppm
export module math;
export import :arithmetic; // 重新导出分区
export import :geometry;

// math:arithmetic.cppm
export module math:arithmetic;
export int add(int, int);
  1. 可见性private module fragmentmodule :private;)隐藏实现细节。