如何定义导出常量?

2023-11-24

我一直在尝试新的模块功能,但无法导出全局常量。导出似乎编译得很好,但是在导入时编译器抱怨未声明常量。我的代码:

test.cpp

export module test;

export struct my_type { int x, y; };
export constexpr int my_constant = 42;
export int my_function() { return my_constant; }

main.cpp

import test;

int main() {
    my_type t{1, 2};
    int i = my_function();
    int j = my_constant; // <- error here
}

我究竟做错了什么?我在 Linux 上使用 g++ 11.1.0:g++-11 -std=c++20 -fmodules-ts test.cpp main.cpp -o main

错误信息是:error: ‘my_constant’ was not declared in this scope


const 限定的变量默认具有内部链接,因此可能需要将其写为

export extern const int my_constant = 42;

根据https://en.cppreference.com/w/cpp/language/storage_duration the export定义应该使变量具有外部链接,因此您可能遇到了 C++20 尚未完全实现的角落之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何定义导出常量? 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • 增强的 for 循环不适用于将值分配给数组(Java)[重复]

    这个问题在这里已经有答案了 我不明白为什么我不能使用增强的 for 循环为数组的元素赋值 例如 像这样使用 for 循环 int array new int 5 for int i 0 i lt 5 i array i 10 产生我想要的东
  • 用GD创建一张包含其他图像的图片

    我想用PHP用GD创建一张由不同的其他图片组成的图片 例如 我有 6 张 或更多 图片 我想创建一张包含这些不同图片的图片 困难在于我的最终图片必须具有固定的宽度和高度 304x179 因此如果不同的图片太大 则必须将其剪切 这是来自 Ic
  • 如何使用 Ruby 从 CSV 中删除行

    给定以下 CSV 文件 如何删除 foo 列中包含单词 true 的所有行 Date foo bar 2014 10 31 true derp 2014 10 31 false derp 我有一个可行的解决方案 但它需要创建一个辅助 CSV
  • MySQL Inner Join with LIMIT 到左表

    我有这个数据库查询 SELECT FROM metadata im INNER JOIN content ic ON im rev id ic rev id WHERE im id 00039 AND current revision 1
  • 为什么“自动”和显式引用变量声明的行为不同?

    我有这样的事情 class Bar class Foo public Foo bar new Bar Bar GetBar return bar get private std unique ptr
  • 静态字段在内部到底是如何工作的? [复制]

    这个问题在这里已经有答案了 说你有课 class Foo public static bar 当你说 new Foo 我可以想象 在内存中 为这个对象保留了一个空间 当你再次说 new Foo 现在您有了另一个可用于该对象的空间 然而 静电
  • URL 目录部分的有效字符(对于短链接)

    除了 A Za z0 9 之外还有其他字符可以用来缩短链接而不会遇到麻烦吗 我在想 什么的 对于浏览器供应商所遵守的 URL 中可以使用哪些字符 是否存在明确的标准 A 路径段 路径中的部分由 绝对 URI 路径中可以包含零个或多个pcha
  • Flexbox - 以 2 件为一组包装物品

    有一个简短的问题要问熟悉 Flexbox 的人 我有一排 4 个弹性项目 我希望在第一个断点处做到这一点 max width 1024px 它们包装成 2 列 每列 2 列 我想我也许可以使用 Flex 容器内每个项目的宽度的 值来实现这一
  • linux下如何制作透明窗口

    我想让应用程序成为 Linux 上带有启动屏幕的应用程序 我想使用 X11 和 glx OpenGL 应用程序 我找到了一种方法来删除窗口周围的边框 但我找不到如何使其透明 我怎样才能做到这一点 这是我问题的真正答案 A demonstra
  • ASP.NET Mvc Api:设置 cookie,然后 302/303 重定向会丢失 cookie

    我有一个返回 HttpResponseMessage 的 API 操作 API地址如下 http localhost login authcode xxx API 操作执行一些登录身份验证并将用户重定向到注册或欢迎页面 代码如下 var r
  • JSON 文件的 Mongoimport

    我有一个包含大约 2000 条记录的 JSON 文件 与 mongo 数据库中的文档相对应的每条记录的格式如下 jobID 2597401 account XXXXX user YYYYY pkgT pgi 7 2 5 libA libpg
  • 每个对象的 Groovy 动态属性

    使用 Groovy 1 8 我正在尝试创建一个动态类定义 它将缓存每个对象的属性 我确实用过propertyMissing无需将属性添加到对象就好了 我只是认为缓存属性会更有效 正确的 请注意 每个实例必须有自己不同的属性 下面的代码工作正
  • 在 angularjs 中将表单设置为无效

    我需要在开始时将 ng form 设置为无效 因为它是向导的后续部分 该表单包含一个包含元素的网格 每个元素都有自己的验证 但问题是 当没有元素时 表单显示为有效 当行数为 0 时 我需要将其标记为起始情况无效 如何做到这一点 经过一些研究
  • Azure:通过 ARM 模板将角色分配给存储容器

    我试图通过arm模板将 存储Blob数据贡献者 预览 角色分配给特定的存储容器 但我就是无法弄清楚正确的语法 这就是我所拥有的 schema https schema management azure com schemas 2015 01
  • 如何使用 XPath 查找一组元素中属性的最小值?

    如果我有这样的 XML
  • SCRIPT1002:使用 React + Babel + Webpack 时 IE11 中的语法错误

    我正在尝试使用 Webpack Babel 在 IE gt 11 中运行具有 ES2015 功能的 React 应用程序 该设置是自定义的 使用inferno compat层 所以没有create react app在这里使用 然而 尽管应
  • 通过 dbus 传递大型数据结构

    我正在使用 dbus 来通信两个程序 一个人创建一个大图像 然后将其发送给其他程序以进行进一步处理 我将图像作为 ByteArray 传递 对于 2000x2000 图像 我的程序可以工作 但对于 4000x4000 图像 它会出现以下问题
  • 更改 ActionBar 上溢出按钮的颜色

    是否可以更改操作栏上的溢出按钮 3 个垂直点 的颜色 如果是这样 我们该怎么做 我没有找到溢出按钮的任何样式 Thanks 您可以使用以下样式声明更改用于它的图像
  • 请求头太大

    我在日志中发现了几个IllegalStateException异常 2009 01 28T14 10 16 050 0100 SEVERE sun appserver2 1 javax enterprise system container
  • 如何定义导出常量?

    我一直在尝试新的模块功能 但无法导出全局常量 导出似乎编译得很好 但是在导入时编译器抱怨未声明常量 我的代码 test cpp export module test export struct my type int x y export