C 易失性位域结构的复制构造函数

2023-12-05

Good day

我正在尝试在 C++11 项目中使用 C SD 驱动程序/文件系统库 (Keil MDK)。它是由 Keil MDK 5.23 中的 Pack 管理器添加的。我正在使用 ARMCC 5.06u4 进行编译

我收到警告class "_ARM_MCI_STATUS"没有合适的复制构造函数”,这很奇怪,因为它声明的标头有extern "C" {.

默认情况下,该包没有将其设置为 C 或 C++ 的选项,但我已手动将该文件添加为 C 文件。还是一个问题。

该结构体在内部声明extern "C" { as:

typedef volatile struct _ARM_MCI_STATUS {
    uint32_t command_active   : 1;        ///< Command active flag
    uint32_t command_timeout  : 1;        ///< Command timeout flag (cleared on start of next command)
    uint32_t command_error    : 1;        ///< Command error flag (cleared on start of next command)
    uint32_t transfer_active  : 1;        ///< Transfer active flag
    uint32_t transfer_timeout : 1;        ///< Transfer timeout flag (cleared on start of next command)
    uint32_t transfer_error   : 1;        ///< Transfer error flag (cleared on start of next command)
    uint32_t sdio_interrupt   : 1;        ///< SD I/O Interrupt flag (cleared on start of monitoring)
    uint32_t ccs              : 1;        ///< CCS flag (cleared on start of next command)
    uint32_t reserved         : 24;
} ARM_MCI_STATUS;

当结构体在以下位置返回时会出现问题:

static ARM_MCI_STATUS GetStatus (MCI_RESOURCES *mci) {
  return mci->info->status;
}

Where status被声明为ARM_MCI_STATUS status;。我不明白为什么这应该成为一个问题。

如果我在没有 --cpp 的情况下编译,那么它编译时不会出现问题。

有什么建议么?


只因为你的struct被标记extern "C"并不意味着它不会仍然被编译为 C++ 代码。

这意味着return mci->info->status;调用隐式生成的复制构造函数。 因为_ARM_MCI_STATUS被标记volatile,它的成员是,这意味着默认的复制构造函数需要T&无法绑定到它传递的易失性左值引用。

这在c首选项解释:

否则,隐式声明的复制构造函数是 T::T(T&)。 (笔记 由于这些规则,隐式声明的复制构造函数 无法绑定到易失性左值参数。)

而且在实际标准中(只是很难找到正确的条款,但它就在那里)。

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

C 易失性位域结构的复制构造函数 的相关文章

  • 如果异常保存在 std::exception_ptr 中,那么在 catch 语句之外使用异常是否安全?

    我有一个std exception ptr其中有一个例外 我要调用std rethrow exception要获取实际的异常 catch 语句之后的异常是否有效 我的猜测是 因为我仍然持有std exception ptr它仍然有效 参见示
  • 为什么在从同一解决方案引用另一个项目时会出现 FileNotFound 异常?

    我正在学习如何使用 NUnit 我的解决方案中有我的主项目 并在同一解决方案中创建了一个单独的项目 该项目将保存我的单元测试 并具有自己的命名空间 从该项目中 我添加对主项目的引用并添加 using MainProjectNamespace
  • 如何使用带有进度条的 HttpClient 下载文件?

    我创建了一个名为SiteDownload并添加了一些下载图像的链接 using System Collections Generic using System Linq using System Net using System Threa
  • C++ 标准是否允许未初始化的 bool 导致程序崩溃?

    我知道一个 未定义的行为 C 几乎可以让编译器做任何它想做的事情 然而 我遇到了一次令我惊讶的崩溃 因为我认为代码足够安全 在这种情况下 真正的问题仅发生在使用特定编译器的特定平台上 并且仅在启用优化的情况下发生 我尝试了几种方法来重现问题
  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • 委托和接口如何互换使用?

    我可以使用接口方法代替委托吗 如何 我发现搜索接口方法比使用委托更快 我希望有一个简单的代码片段 理论上 可以通过包含单个方法的接口 例如 Java 没有委托 来完成委托完成的所有工作 然而 它使代码变得更加冗长并且没有带来什么好处 话又说
  • OpenGL,如何独立旋转对象?

    到目前为止我的代码 void display void glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT Clear Screen And Depth Buffer glLoadIdentity
  • 以概率从列表中选择随机元素

    我有一个包含四个项目 A B C D 的列表 每个项目都有被选择的概率 例如 A 有 74 的机会被选中 B 15 C 7 D 4 我想创建一个函数 根据其概率随机选择一个项目 有什么帮助吗 为您的项目定义一个类 如下所示 class It
  • 析构函数、dispose 和 Finalize 方法之间的区别

    我正在研究垃圾收集器在 C 中的工作原理 我对使用感到困惑Destructor Dispose and Finalize方法 根据我的研究和理解 在我的类中拥有析构函数方法将告诉垃圾收集器以析构函数方法中提到的方式执行垃圾收集 该方法不能在
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • WCF 客户端返回空数组 - XML 响应似乎正常

    我正在尝试为我们的 Intranet 上托管的 Web 服务创建一个简单的 WCF 客户端 C 使用 Fiddler 和 SoapUI 我可以看到请求和响应似乎正常 但是当我运行代码时返回一个空数组 我会尝试只粘贴相关的行 但会是很多东西
  • 如何在C中递归地找到另一个字符串中的字符串位置?

    我们有一个任务来创建带有两个字符串参数的递归函数 原型应该是这样的 int instring char word char sentence 如果我们愿意调用函数 instring Word Another Word 它应该具有以下返回值
  • C++20 views::join 在生成的嵌套范围::single_view 上进入无限循环

    我正在使用 GCC 实现 v10 2 和 v11 来处理 C 20 范围 测试的行为std views join https en cppreference com w cpp ranges join view 我尝试使用生成嵌套视图sin
  • 为什么 C++ 元组如此奇怪?

    我通常创建自定义structs将不同类型的值分组在一起时 这通常很好 而且我个人发现命名成员访问更容易阅读 但我想创建一个更通用的 API 在其他语言中广泛使用元组后 我想返回类型的值std tuple但发现它们在 C 中使用比在其他语言中
  • 我的 Opencv 应用程序处理速度非常慢

    我正在构建一个 OpenCV 应用程序 它从相机捕获视频 并在删除背景后将其覆盖在另一个视频上 我无法达到合理的速度 因为它以大约 1 fps 的速度播放输出 而我的背景去除以 3 fps 的速度工作 有没有办法以正常速度显示背景视频并以
  • Roslyn,通过 hostObject 传递值

    我正在尝试通过 hostObject 发送一个类 但显然它不想工作 using Roslyn Compilers using Roslyn Compilers CSharp using Roslyn Scripting using Rosl
  • 使用 System.Json 迭代 JSON

    我正在探索 NET 4 5 的功能System Json库 但没有太多文档 而且由于流行的 JSON NET 库 搜索起来相当棘手 我基本上想知道 我如何循环一些 JSON 例如 People Simon Age 25 Steve Age
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G
  • “while(true) { Thread.Sleep }”的原因是什么?

    我有时会遇到以下形式的代码 while true do something Thread Sleep 1000 我想知道这是否被认为是好的做法还是坏的做法以及是否有任何替代方案 通常我在服务的主函数中 找到 这样的代码 我最近在 Windo

随机推荐

  • NodeJS Web服务器“未定义不是一个函数”

    我刚刚浏览了一本书 pro Angularjs 中的教程 并且在设置 Nodejs Web 服务器时遇到了一些问题 就像书中描述的那样 我使用以下 server js 来创建它 var connect require connect con
  • R:将解释变量的动态数量拟合到多项式回归中

    假设给我一个数据框df在运行时 如何使用多项式回归拟合多项式模型 每个预测变量都是 df 中的一列 并且常数 k gt 2 的程度 困难在于 df 是在运行时读取的 因此在编写脚本时其列的数量和名称是未知的 但我确实知道响应变量是第一列 所
  • 解析类似 XML 的日志文件

    我有一个日志文件 记录事件如下 我想将每个事件转换为 PSCustomobject 它看起来有点像 XML 但将 xml 转换为文件的 Get Content 会出现错误 无法将值 System Object 转换为类型 System Xm
  • 如何检测 Botframework v4 中的对话结束?

    我试图在系统中的任何其他对话框完成后启动反馈对话框 我发现这个答案上面说要使用onEndDialog 但这不是 ActivityHandler 中的有效函数 只是onDialog 我的 主对话框 位于扩展 ActivityHandler 的
  • 在 MVC 3 应用程序中为模型中的对象属性创建视图?

    我有一个 Asp Net MVC 3 应用程序 其中包含一个由 EF 访问的数据库 Consultants 现在 数据库中的顾问表与其他几个表存在一对多关系 以获取简历类型信息 工作经验等 因此 用户应该能够填写一次他们的姓名等 但应该能够
  • pandas 中独立的多头列数据框

    请帮助将这个多帧熊猫分成单独的部分 这就是代码 import datetime as dt import pandas as pd import pandas datareader data as web pd set option dis
  • Android,以编程方式上传照片到 imgur 上托管

    我尝试了不同的方法来通过 imgur 上传和检索链接 但尽管查看了 imgur api 但没有一个成功 http api imgur com examples uploading java 但以下方法部分有效 我试图找回 错误 如果发生任何
  • Android 中连续的“Action_DOWN”

    Override public boolean onTouchEvent MotionEvent event if event getAction MotionEvent ACTION DOWN Log d VIEW LOG TAG Tou
  • Qt:使用二维数组值更新像素图网格布局

    我正在使用 Visual Studio 2010 和 Qt 4 7 都是 Windows 中的 C 组合进行游戏 该游戏是战舰的克隆 基于控制台输入 我已经按照我想要的样子创建了 gui 在 Qt 设计器的 Qt 端 我的 gui 由一个
  • 无法将 Entity Framework Core 迁移添加到 .NET Standard 2.0 项目

    我有一个包含许多项目的解决方案 其中之一 Domain 是一个 NET Standard 2 0 项目 我在其中创建了 EF CoreDbContext我想要启用的实现数据库迁移 我看到了各种博客和问答论坛 其中解释了问题 但由于 NET
  • 谷歌驱动器分页不起作用。清空 nextPageToken

    我正在 Symfony 中使用 Google Drive API 该库包含在以下行中composer json google apiclient 2 2 代码如下 service new Google Service Drive googl
  • 如何结合多处理和 eventlet

    我有一个任务需要启动 2 个进程 并且每个进程内需要启动 2 个线程才能真正工作 下面是我用来模拟我的用例的源代码 import multiprocessing import eventlet def subworker num1 num2
  • GCC 和 MS 编译器的模板实例化详细信息

    任何人都可以提供模板实例化方式的比较或具体细节吗 在 GCC 和 MS 编译器中的编译和 或链接时处理 这个过程有什么不同吗 在静态库 共享库和可执行文件的上下文中 我发现this doc关于 GCC 如何处理它 但我不确定这些信息是否 仍
  • “异步任务然后等待任务”与“任务然后返回任务”[重复]

    这个问题在这里已经有答案了 为了对异步编程和await 我想知道这两个代码片段在多线程以及执行顺序和时间上有什么区别 This public Task CloseApp return Task Run gt save database tu
  • 在silverlight中从字符串转换为数据?

    基本上我正在尝试这样做 Path path new Path string sData M 250 40 L200 20 L200 60 Z var converter TypeDescriptor GetConverter typeof
  • 如何在 SQL Server 中获取区分大小写的排序规则版本?

    有没有办法获得区分大小写的排序规则版本以在查询中使用 假设该查询可用于具有不同排序规则的数据库 其中一些排序规则不区分大小写 并且可以具有不同的区域性 例如多个客户端 但是 此查询应始终以区分大小写的方式运行 同时 如果可能 不更改排序规则
  • new Object() 和 Object() 有什么区别[重复]

    这个问题在这里已经有答案了 在 C 中 您可以使用 new 关键字或其他方式实例化对象 Object o new Object 但你也可以这样做 Object o Object 两者之间到底有什么区别 为什么我要使用其中一种而不是另一种 你
  • 绘制椭圆边界点的百分比

    我使用 ellipsoidhull 函数来导出一个椭圆 该椭圆包围 x y 坐标中的所有点 然后 我使用 point in polygon 函数来预测一组新的 X Y 坐标是否落在椭圆内部 外部 是否可以使用 80 的点 而不是绘制一个包围
  • 命名空间无法识别(即使它存在)[重复]

    这个问题在这里已经有答案了 我收到此错误 找不到类型或命名空间名称 AutoMapper 您是否缺少 using 指令或程序集引用 有趣的是 我的项目中已经有了该参考 这是我的代码 using System Collections Gene
  • C 易失性位域结构的复制构造函数

    Good day 我正在尝试在 C 11 项目中使用 C SD 驱动程序 文件系统库 Keil MDK 它是由 Keil MDK 5 23 中的 Pack 管理器添加的 我正在使用 ARMCC 5 06u4 进行编译 我收到警告class