【问题标题】:Is the "module;" statement required for c++-20 modules是“模块”; c++-20 模块所需的语句
【发布时间】:2021-06-25 06:12:25
【问题描述】:

我一直在试验,发现在某些网站上,示例以以下行开头:

module;

定义文件是一个模块。

我的问题有两个:

  • 是“模块;”将需要 c++ 模块
  • 它应该是一种区分模块文件和非模块文件(而不是文件扩展名)的方法吗?

【问题讨论】:

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


    【解决方案1】:

    module; 自己启动global module fragment。你可以有一个没有特定形式的模块文件,但你需要在某处使用关键字module

    C++ 标准从未强制要求特定的文件扩展名,所以在这里这样做会很奇怪。

    【讨论】:

    • 不仅仅是某个地方——缺少全局模块片段,模块声明必须是翻译单元中的第一个声明。
    • @DavisHerring 缺少全局模块框架。那是什么意思?您的意思是在“导出模块”语句之前没有导入或包含?
    • @Lasersköld:完全正确:导入紧随其后,#include 进入全局模块片段。
    • @DavisHerring 所以要清楚,你不能用“export module x”启动一个模块文件?
    • @Lasersköld:当然可以(这是模块声明,它是第一个),但是这样的文件通常不会#include 任何东西,因为它会成为的一部分 模块而不是它的依赖项。
    猜你喜欢
    • 2022-09-27
    • 2021-08-28
    • 2014-05-30
    • 2014-12-28
    • 2021-11-06
    • 2021-11-25
    • 2021-09-18
    • 1970-01-01
    • 2019-04-17
    相关资源
    最近更新 更多