C++20模块export与import规则
请详细说明C++20 Modules中export和import关键字的规则,包括接口分区和可见性控制。
回答
小字辈
核心规则:
-
export:声明模块对外暴露的符号
export int func();— 导出函数export { /* 批量导出 */ }— 导出块export import :partition;— 重新导出模块分区
-
import:导入模块、头文件单元或分区
import std;— C++23标准库模块(GCC14+)import math;— 导入自定义模块import <vector>; — 导入头文件单元
-
模块分区:
// math.cppm
export module math;
export import :arithmetic; // 重新导出分区
export import :geometry;
// math:arithmetic.cppm
export module math:arithmetic;
export int add(int, int);
- 可见性:
private module fragment(module :private;)隐藏实现细节。