【问题标题】:C++ Module "failed to read module 'std.io.gcm': No such file or directory"C++ 模块“无法读取模块‘std.io.gcm’:没有这样的文件或目录”
【发布时间】:2019-03-07 01:29:27
【问题描述】:

我正在尝试使用 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:致命错误:跳下疯狂 train to crashville 编译终止。

更新:

以下代码可以正常工作。

//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

【问题讨论】:

  • 什么是std.io?那是 GCC 模块实现的一部分吗?
  • @NicolBolas 我从 c++ 模块 ts 复制代码:open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4720.pdf
  • 这不能回答问题。 GCC 是否提供std.io 模块?如果没有,则无法导入。
  • @NicolBolas 谢谢,希望我能在它的文档中找到它
  • @NicolBolas 我认为在这个 docker 镜像中,std.io 还没有准备好。但是编译器确实支持模块:)。

标签: c++ c++20


【解决方案1】:

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 中的标准库模块的策略了。

【讨论】:

  • 谢谢!我会期待使用它。这是一个非常好的功能。
猜你喜欢
  • 2021-03-30
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多