模块 (C++20 起)

< cpp‎ | language

模块有助于将大量代码分拆为各个逻辑部分。

模块与命名空间是正交的。

// helloworld.cpp
export module helloworld;  // 模块声明
import <iostream>;         // import声明
 
export void hello() {      // export声明
    std::cout << "Hello world!\n";
}
// main.cpp
import helloworld;  // import声明
 
int main() {
    hello();
}

语法

export(可选) module 模块名 模块分区(可选) 属性说明符序列(可选) ; (1)
export 声明 (2)
export { 声明序列(可选) } (3)
export(可选) import 模块名 属性说明符序列(可选) ; (4)
export(可选) import 模块分区 属性说明符序列(可选) ; (5)
export(可选) import 头文件名 属性说明符序列(可选) ; (6)
module ; (7)
module : private ; (8)
1) module声明。声明当前翻译单元是一个“模块单元”。
2,3) export声明。导出全部命名空间域内的声明到declarationdeclaration-seq中。
4,5,6) import声明。导入一个模块单元或模块分区或头文件单元。
7) 开始一个“全局模块片段”。
8) 开始一个“私有模块片段”。