__cxa_pure_virtual 的目的是什么?

2024-04-09

在使用 avr-gcc 编译时,我遇到了如下链接器错误:

undefined reference to `__cxa_pure_virtual'

我发现了其中指出:

The __cxa_pure_virtualfunction 是一个错误处理程序,在调用纯虚函数时调用。

如果您正在编写具有纯虚函数的 C++ 应用程序,则必须提供自己的__cxa_pure_virtual错误处理函数。例如:

extern "C" void __cxa_pure_virtual() { while (1); }

按照建议定义此函数可以修复错误,但我想知道:

  • 这个函数的目的是什么,
  • 为什么我需要自己定义它以及
  • 为什么可以将其编码为无限循环?

如果在程序运行时的任何地方创建了一个对象,但未填充虚函数指针,并且当调用相应的函数时,您将调用“纯虚函数”。

您描述的处理程序应该在您的开发环境附带的默认库中定义。如果你碰巧省略了默认库,你会发现这个处理程序未定义:链接器看到一个声明,但没有定义。这时候你就需要提供你自己的版本。

无限循环是可以接受的,因为它是一个“响亮的”错误:软件的用户会立即注意到它。任何其他“大声”的实现也是可以接受的。

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

__cxa_pure_virtual 的目的是什么? 的相关文章

随机推荐

  • 如何使用 boost::log::BOOST_TRIVIAL_LOG 更改默认格式?

    boost log 看起来真的很强大 它提供了一个用于简单日志记录的 BOOST LOG TRIVIAL 宏 但如何更改默认格式呢 它默认打印时间戳 但我不想要它 你有什么主意吗 似乎唯一的方法是重新定义一个新的接收器并将其添加到核心 然后
  • 使用 if 语句时,当前上下文中不存在该名称[重复]

    这个问题在这里已经有答案了 我想用用户给出的小数位数来计算 Pi 当输入为 0 时 变量 piNumber 应设置为 3 而不是 3 以便输出没有无用的逗号 这有效 static string PiNumberFinder int amou
  • 如何在 PySpark Pipeline 中使用 XGboost

    我想更新我的 pyspark 代码 在pyspark中 它必须将基础模型放入管道中 即办公室演示 http spark apache org docs latest ml pipeline html管道使用逻辑回归作为基本模型 但是 似乎无
  • CLion:调试由 python 生成的 C++ 子进程

    CLion 有没有办法调试从 Python 脚本运行的 C 程序subprocess Popen 我可以设置断点并调试Python程序 如果直接运行C 程序 我可以设置断点并调试它 但是当程序从Popen启动时 我无法触发C 断点 我尝试在
  • 如何在unix中查找字符串之间包含多个空格的行?

    我有像这样的行 1 Harry says hi 2 Ron says bye 3 Her mi oh ne is silent 4 The above sentence is weird 我需要一个 grep 命令来检测第三行 这就是我正在
  • 矩阵求逆 R

    我想求逆方形对称正定矩阵 我知道有两个功能solve and chol2inv 在 R 中 但他们的结果是不同的 我需要知道为什么会发生这种情况 谢谢 以下是计算矩阵逆的几种方法 包括solve and chol2inv gt A lt m
  • 默认情况下启用或禁用菜单项。为什么?

    我有一些遗留代码 由于某种原因 菜单项在启动时被启用或禁用 我的问题是 如何 有没有办法在不调用 EnableMenuItem 函数的情况下执行此操作 MFC 有没有办法做与资源设置所说相反的事情 我也不明白为什么当最后一个子窗口关闭时 当
  • 页面上或 .js 脚本中是否可以有多个 jQuery 就绪事件?

    我注意到 jQuery 就绪事件和函数在我的大部分 JavaScript 中只使用了一次 但是 我想知道是否可以多次使用就绪事件 例如 是否可以在我的主 html 代码中的就绪事件函数调用中调用函数 然后在 js 文件中的另一个就绪事件函数
  • 在 Woocommerce 中下订单后,将值插入自定义表中

    我需要插入到我的自定义表中许可证表 username order id Quantity This needs to be populated when an order is placed Username customer s emai
  • 这段 1988 年的 C 代码有什么问题?

    我正在尝试编译 C 编程语言 K R 一书中的这段代码 它是 UNIX 程序的基本版本wc include
  • 尝试通过我的新域访问 WordPress with LiteSpeed 时显示 404

    我已经在 Digital Ocean Droplet 中创建了一个带有开放 LiteSpeed 缓存的 WordPress 实例 如果我在 设置 常规站点 和 WordPress URL 中配置了 IP 则它可以正常工作 但是当我添加我的
  • SQL:枚举每个组内返回的行

    假设我有一个SELECT 返回某物的查询 像这样 role name MANAGER Alice WORKER Bob WORKER Evan WORKER John MANAGER Max WORKER Steve 是否可以添加另一列来枚
  • 从 Git 存储库安装 Python 包后,某些文件夹丢失

    我想从以下存储库安装软件包https github com geomin django countria https github com geomin django countria 我正在使用的命令是pip install git gi
  • Xcode 存档调试条错误

    我正在尝试将大型遗留 C 库与 iOS 应用程序集成 我们能够在设备上构建并运行 但无法存档该应用程序 归档失败并出现以下错误 命令 Applications Xcode app Contents Developer Toolchains
  • 关闭依赖项的默认功能

    我有一个依赖链 最终依赖于可选地在已弃用的库上 具体来说 我想使用间接依赖于 rustc serialize 的 nalgebra 如下所示 nalgebra gt alga gt num complex gt 可选默认值 rustc se
  • 与多处理错误的另一个混淆是,“模块”对象没有属性“f”

    我知道之前已经回答过这个问题 但似乎直接执行脚本 python filename py 不起作用 我在 SuSE Linux 上安装了 Python 2 6 2 Code usr bin python coding utf 8 from m
  • Spark 作业在 YARN 模式下失败

    我有一个用 Scala 编写的 Spark 程序 它从 HDFS 读取 CSV 文件 计算新列并将其保存为 parquet 文件 我正在 YARN 集群中运行该程序 但每次我尝试启动它时 执行程序都会在某个时候失败并出现此错误 您能帮我找出
  • 如何验证nginx是否正在运行?

    After 运行 ASP NET vNext 项目 http xameeramir github io asp net 5 ubuntu linux 在我的本地机器上我试图弄清楚如何运行它nginx https www nginx com
  • 绑定 elementname 究竟是如何工作的?

    我记得几周前读过 它有时在模板内不起作用 我最近尝试在两个不同的窗口中绑定东西 但它找不到名称声明 所以我假设它是本地的命名空间类 只需通过设置 datacontext 来绑定 然而 我真的很好奇什么时候能够使用绑定元素名 什么时候不能使用
  • __cxa_pure_virtual 的目的是什么?

    在使用 avr gcc 编译时 我遇到了如下链接器错误 undefined reference to cxa pure virtual 我发现了其中指出 The cxa pure virtualfunction 是一个错误处理程序 在调用纯