【问题标题】:C++ Module Partition Include StatementsC++ 模块分区包含语句
【发布时间】:2021-08-28 13:03:37
【问题描述】:

我有以下两个文件:

//building.cpp

export module building;
export import building:apartment;
//apartment.cpp

module;
#include<iomanip>
export module building:apartment;

void test(){
   std::streambuf* buf;
   std::ostream os(buf);
   os<<std::setw(17);
}

使用gcc11,我做

$ g++ -c apartment.cpp -std=c++20 -fmodules-ts
$ g++ -c building.cpp -std=c++20 -fmodules-ts

此代码无法编译(内部编译器错误)。但是,如果我将 iomanip 包含在 apartment.cpp 和 building.cpp 中,我不会收到任何错误。我记得 MSVC 编译器也有类似的情况。我究竟做错了什么?模块文件及其分区中是否应该包含相同的包含语句?

【问题讨论】:

  • 模块源不应该有不同的扩展名吗?
  • @MarekR 我认为这仅适用于 MSVC (.ixx),但我并不完全确定。我还没有真正使用过模块。
  • This says clang 也有自己的扩展。
  • @MarekR 没必要。在它的测试中,GCC 简单地使用.cpp 来处理所有事情。

标签: c++ c++20 c++-modules


【解决方案1】:

这是一个实施问题。您应该搜索报告是否存在,如果不存在则编写报告。

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 2013-05-03
    • 1970-01-01
    • 2011-08-29
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多