为啥异常不适用于 OSX 上的 gcc7 和 -static-libgcc?

Posted

技术标签:

【中文标题】为啥异常不适用于 OSX 上的 gcc7 和 -static-libgcc?【英文标题】:Why don't exceptions work with gcc7 and -static-libgcc on OSX?为什么异常不适用于 OSX 上的 gcc7 和 -static-libgcc? 【发布时间】:2018-06-19 05:10:33 【问题描述】:

如果我用 gcc-7、-static-libstdc++-static-libgcc 编译这个简单的程序;然后在 OSX 上运行

#include <exception>
#include <iostream>

int main() try 
  throw std::runtime_error"abc123";
  return 0;
 catch (const std::runtime_error& e) 
  std::cout << e.what() << "\n";
  return 0;

失败,错误代码为 134。

为什么它不像在 linux 上使用相同的选项编译时那样打印“abc123”?

【问题讨论】:

什么是错误代码 134? 这是来自$? 的返回码。它表示Program Abort 你在 OSX 上使用 gcc7 有什么原因吗?它在我的 Mac 上的 clang 版本上按预期工作。 @JohnPerry,是的,我正在使用 GCC 的特定功能,这些功能在 clang 中不可用。 【参考方案1】:

GCC8 中的固定(-ish);查看PR86215 和相关PR80556 的更新。

【讨论】:

以上是关于为啥异常不适用于 OSX 上的 gcc7 和 -static-libgcc?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 cURL 不适用于 IIS7 上的 Windows 身份验证?

为啥这个 CSS 不适用于 Android 上的 Chrome,但适用于其他任何地方?

为啥以下查询不适用于双 LIKE 子句?

为啥 shadowColor: '...' - 不适用于“react-native-drawer”组件的 Android 上的抽屉样式?

JavaFX .jar 适用于 Windows 和 OSX,但不适用于 Linux

视频不适用于 Safari 和 iOS