優點
沒有頭文件
聲明實現仍然可分離, 但非必要
可以顯式指定那些導出(類, 函數等)
不需要頭文件重復引入宏 (include guards)
模塊之間名稱可以相同不會沖突
模塊只處理一次, 編譯更快 (頭文件每次引入都需要處理)
預處理宏只在模塊內有效
模塊引入順序無關緊要
創建模塊
// cppcon.cpp
export module cppcon;
namespace CppCon {
auto GetWelcomeHelper() { return "Welcome to CppCon 2019!"; }
export auto GetWelcome() { return GetWelcomeHelper();}
}
引用模塊
// main.cpp
import cppcon;
int main(){
std::cout << CppCon::GetWelcome();
}
import 頭文件
import <iostream>
隱式地將 iostream 轉換為模塊
加速構建, 因為 iostream 只會處理一次
和預編譯頭 (PCH) 具有相似的效果