我正在尝试使用docker image
测试c ++模块docker pull benboeckel/cxx-modules-sandbox:latest
docker run -it image_id
sh-4.4$ g++ --version
g++ (GCC) 9.0.1 20190301 (experimental) [c++-modules:20190305-1618]
然后,创建一个测试文件。
import std.io;
int main()
{
return 0;
}
我遇到以下错误:
sh-4.4 $ g ++ -o m main.cpp -std = c ++ 2a -fmodules-ts在导入的模块中 在main.cpp:1:1:std.io:错误:无法读取模块'std.io.gcm':否 这样的文件或目录std.io:致命错误:疯了 前往rashville编译的火车终止了。
更新:
以下代码可以正常工作。
//m.cpp
export module M;
export int sq(int i) { return i*i; }
//main.cpp
import M;
int main() { return sq(9); }
g++ -o m main.cpp m.cpp -std=c++2a -fmodules-ts
答案 0 :(得分:2)
Modules已添加到C ++ 20草案中,但这并不意味着标准库现在已模块化。 There's an effort to modularize it,但到目前为止,我们还没有具体的内容:
尽管我们似乎已经在模块语言功能的设计上达成共识,但是我们关于如何以及何时将C ++标准库模块化的计划还不成熟。已经提出了一些建议([P0581R1]和[P1212R0]),并且已经进行了初步讨论([2018-Jacksonville-LEWG-P0581R0-Minutes]和[2018-San-Diego-EWG-P1212R0-Minutes]),但我们还没有承诺要走的路。鉴于C ++ 20周期已接近尾声,现在是时候该决定我们在C ++ 20中使用标准库模块的策略了。