gcc clang对带有-Og的`std :: terminate()'的未定义引用

时间:2018-12-18 14:41:32

标签: c++ exception gcc optimization

我有一个使用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被忽略了。

在我的项目中根本没有“ throw”语句,以某种方式看似无害的代码中的某些特定点会导致编译错误。在错误的位置删除noexcept会使项目正常构建和运行。

如果我做一个小项目,我将无法复制它。

0 个答案:

没有答案