但是,由于在 C++20 中将模块引入 C++,因此 std 库本身在 C++23 之前不能作为模块导入。
我想编写这样的代码,import std.core;
所以我尝试制作自己的 std 库,只需从std::
.
文件 stdcore.mpp 如下所示:
module;
#include <string>
#include <string_view>
export module stdcore;
// This function will never be used.
// it only exports std::string and std::string_view.
export void __105aw1d065adw__(std::string,
std::string_view);
和 main.cxx:
import stdcore;
int main()
{
std::string s{"Hello world!"};
return 0;
}
用这些编译它们:
CXX="clang++ -fmodules-ts -std=c++20 -Wall"
$CXX --precompile -x c++-module stdcore.mpp
一切看起来都很好,但是当我执行此操作时:
$CXX main.cxx -c -fmodule-file=stdcore.pcm
我有:
main.cxx:5:2: error: missing '#include <string>'; 'std' must be declared before it is used
std::string s{"Hello world!"};
^
E:\msys64\mingw64\include\c++\10.2.0\string:117:11: note: declaration here is not visible
namespace std _GLIBCXX_VISIBILITY(default)
^
1 error generated.
这意味着什么?