c++ - gcc clang 使用 -Og 未定义对 `std::terminate()' 的引用
问题描述
我有一个使用 C++ 的 RTOS 项目,没有异常支持(-fno-exceptions
)。我正在尝试使用-Og
,但我发现它给了我:
undefined reference to `std::terminate()'
这对应于异常处理。
-O
其他选项不会出现此问题。
gcc 是 gcc-arm-none-eabi-7-2018-q2-update
是否-Og
出于某种原因需要异常处理?
更新
此错误的触发器可以是noexcept
关键字。
这是一个有趣的冲突。代码试图说它想用/std::terminate()
代替它的异常。同时,使用,不可能抛出异常,因为这将是编译时错误。因此,如果指定了,这可能会导致某人认为被忽略。try
except
-fno-exceptions
throw
noexcept
-fno-exceptions
在我根本没有“抛出”语句的项目中,不知何故,某些看似无辜的代码的特定点会导致编译错误。在错误位置删除noexcept
会导致项目正确构建和运行。
如果我做一个小项目,我还不能复制它。
解决方案
推荐阅读
- powershell - PowerShell:关闭标准输出句柄
- r - 根据将其他列与另一个数据框匹配的值填充数据框的缺失值,同时保留不匹配的值
- javascript - 使用电子伪造打包应用程序时出现问题“无法解析'./→'”
- reactjs - redux 工具包中的变异状态
- xml - 如何在 Powershell 中显示整个 XML 树?
- asp.net-core - 将外部样式表页面分配给 .core Web 应用程序中的剃须刀页面
- laravel - Laravel snappy 返回 Failed to load about:blank, with network status code 301 and http status code 0 - 协议“about”未知错误
- java - 这是解决这个“oneFiveSeven”递归问题的正确方法吗?(不希望有效率)
- c# - 如何在 ASP.NET Core 中注册此依赖项?
- c++ - 具有相同复制值的类型转换问题到新数组类型