如何在三大编译器中使用 STD 模块
C++ 23 中的 Standard Library Modules
自 C++ 20 开始,C++ 标准委员会就开始引入模块化的概念,C++ 23 标准中引入了 Standard Library Modules,可以在代码中直接引入标准库模块,而不再需要使用 #include 来引入头文件。
比如如下的代码:
1  | import std;  | 
这里直接使用了 std 模块,而不再需要 #include <print>(<print> 也是C++ 23 的新特性)。
MSVC 中使用 STD 模块
Visual Studio 2022 开始支持 C++ 23 标准,需要在项目属性中手动开启模块支持,之后便可以直接import std;了。
GCC 中使用 STD 模块
GCC 将在 15 版本后支持 Standard Library Modules, 在第一次编译时需要用:
1  | gcc -std=c++23 -fmodules -fsearch-include-path bits/std.cc file.cpp  | 
来得到gcm.cache/std.gcm文件,之后就可以用:
1  | gcc -std=c++23 -fmodules file.cpp  | 
编译文件了(gcc 15 中将把 -fmodules-ts 改为 -fmodules)。
Clang 中使用 STD 模块
GCC 15 版本还没正式发布,但是 Clang 自 17 版本之后已经可以使用 STD 模块了,同时需要libc++。
1  | clang++ -std=c++23 -stdlib=libc++ \  | 
来预编译 libc++ 的 std 模块,之后就可以用:
1  | clang++ -std=c++23 -stdlib=libc++ \  | 
来编译文件了。
clangd 设置
如果使用 clangd,需要在配置文件中加入:
1  | # .clangd  |