在静态库之外抛出 C++ 异常?

2023-11-25

通常,异常不得传播模块边界,例如 Herb Sutters C++ 编码标准(第 62 项)中所解释的那样。当使用不同的编译器或仅编译器设置进行编译时,这可能会崩溃。

我可以理解这个问题,例如的动态链接库。但我想知道它是否也适用于静态库。静态库是上述规则意义上的模块吗?如果使用其他编译器设置(例如对齐)编译库,如果从静态库中抛出异常并在应用程序中捕获异常,程序可能会崩溃吗?


通常,静态库必须由相同的编译器和相同的编译器设置(大部分)进行编译,才能与可交付成果(动态库或可执行文件)兼容。

然后,您可以在静态库的边界之外抛出异常,因为它与编译器生成的一组 .obj 文件没有太大区别。而你显然can在不同的 .obj 模块之间抛出异常。

EDIT:

总结一下评论:

  1. 仅当您使用与编译库相同的编译器和编译器设置时,才能使用静态库。
  2. 您可以在使用相同编译器和编译器设置编译的模块之间引发异常。
  3. 从 1) 和 2) 可以看出,您可以从静态库中抛出异常,因为如果您使用它,则意味着您使用相同的编译器和编译器设置,因此您可以抛出异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在静态库之外抛出 C++ 异常? 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • FirebaseError:[code=resource-exhausted]:资源已耗尽(例如检查配额)

    我有一个大小为 10000 的数组 所有这些都是文档 ID 我正在运行一个数组 需要从 Firestore 获取文档数据 并且需要在每个文档中添加新字段 但我面临以下错误 例如 firebase firestore Firestore 5
  • DATETIME 值在 SQLite 中如何工作?

    我正在创建 Android 应用程序 需要保存创建记录的日期 时间 然而 SQLite 文档说 SQLite 没有为存储日期和 或时间而预留的存储类 并且它 能够将日期和时间存储为 TEXT REAL 或 INTEGER 值 使用一种类型而
  • PHP 中有比任何数字都大的东西吗?

    我需要在 PHP 中模拟 So that min number 总是 number 我想 对于整数 你可以使用PHP INT MAX 以下代码 var dump PHP INT MAX 在我的机器上给出以下输出 int 2147483647
  • AccessType.FIELD、AccessType.PROPERTY 和 @Access 的用途是什么

    我只是想知道所有这些注释之间有什么区别 为什么我们使用这些 意味着它们没有影响 尤其是字段级别和属性级别 使用混合级别注释的目的是什么 Entity Access AccessType FIELD class Employee why th
  • C 中是否有单消费者单生产者无锁队列实现?

    我正在编写一个带有消费者线程和生产者线程的程序 现在看来队列同步在程序中是一个很大的开销 我寻找了一些无锁队列实现 但只找到了Lamport的版本和PPoPP上的改进版本 08 enqueue nonblock data if NULL b
  • 按子数组的数量对数组进行排序

    我有一个看起来像这样的数组 Array some first category gt Array some first name gt Array 0 gt email protected 1 gt email protected 2 gt
  • javax.net.ssl.SSLException:证书中的主机名与android不匹配

    我正在创建一个 Android 应用程序 其中我将数据发送到 Web 服务 但我收到 javax net ssl SSLException 证书中的主机名与 android 不匹配的错误 这是我的代码 AsyncHttpClient cli
  • IFrame (HTML) 是否已过时? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 收到的信息相互矛盾 希望不
  • ANGULAR 6:错误 TS2315:类型“ModuleWithProviders”不是通用的

    您好 我遇到了一个与任何事情都无法关联的问题 我展示了一些我的代码 希望它能有用 考虑一下当我开始创建反应式表单时这个问题就出现了 首先 这是我的 package json name name version 0 0 0 scripts n
  • 为什么 QGraphicsItem::scenePos() 不断返回 (0,0)

    我一直在玩弄这段代码 QGraphicsLineItem anotherLine this gt addLine 50 50 100 100 qDebug lt lt anotherLine gt scenePos QGraphicsLin
  • 文本框不会拉伸以填充视图框

    我希望 LOB 表单中的标签和文本框的字体大小随着窗口大小或分辨率的变化而增大和缩小 为了实现这一点 我将标签和文本框放置在视图框中 标签和自定义单选按钮的行为符合我的预期 但文本框不会水平拉伸以填充视图框 抱歉 由于代表而无法发布图像 如
  • Java8 - 如何知道夏令时现在是否开启

    我需要使用新的 Java 8 日期时间类来了解夏令时是否已启用 我找到了一个如何在 jodatime 中执行此操作的条目 jodatime 如何知道夏令时是否开启 但在 Java 8 中如何找到它呢 jodatime应该有点类似 但我找不到
  • 复制数据帧的观察结果,同时替换 R 中的特定变量值

    我正在寻找一些有关数据重组的建议 我正在使用 Google Forms 收集一些数据 我将其下载为 csv 文件 如下所示 alpha beta option 6 8 9 10 11 apple 9 6 pear 1 6 apple 3 8
  • sql仅按顺序的行进行分组

    假设我有下表 MyTable 1 A 2 A 3 A 4 B 5 B 6 B 7 A 8 A 我需要 sql 查询来输出以下内容 3 A 3 B 2 A 基本上我正在做一个group by但仅适用于序列中在一起的行 有任何想法吗 请注意 数
  • C++ 中的点 (.) 运算符和 -> 有什么区别? [复制]

    这个问题在这里已经有答案了 C 中的点 运算符和 gt 有什么区别 foo gt bar 是相同的 foo bar 由于结合强度 上面的括号是必要的 and 运营商 foo bar 不起作用 因为点 运算符首先被评估 参见运算符优先级 点
  • WordPress 管理员:将自定义帖子类型作为父菜单的子菜单时,父菜单链接将被 CPT 覆盖

    我注册了一个自定义帖子类型 并且我不希望它有自己的菜单 而是想将其放置为名为的现有管理菜单项的子菜单my custom parent page 这是我的代码 register post type my custom post type ar
  • C# - 两个日期之间的差异?

    我正在尝试计算两个日期之间的差异 这是我目前正在使用的 int currentyear DateTime Now Year DateTime now DateTime Now DateTime then new DateTime curre
  • CSS“display: table-column”应该如何工作?

    鉴于以下 HTML 和 CSS 我在浏览器中完全看不到任何内容 撰写本文时最新的是 Chrome 和 IE 一切都崩溃到 0x0 px 为什么
  • R Studio 无法正确处理中文字符

    我在 R Studio 中处理中文字符时似乎遇到问题 简单的代码如下 data lt c 物品 方案 data 1 347 211 251 345 223 201 346 226 271 346 241 210 即使我跑步它也保持不变 Sy
  • 在静态库之外抛出 C++ 异常?

    通常 异常不得传播模块边界 例如 Herb Sutters C 编码标准 第 62 项 中所解释的那样 当使用不同的编译器或仅编译器设置进行编译时 这可能会崩溃 我可以理解这个问题 例如的动态链接库 但我想知道它是否也适用于静态库 静态库是