本地世界从sjlj异常处理方法转移到有利于更新的基于表的方法,因为当没有抛出异常时后者的零时间成本。
但是,我仍然想使用sjlj方法。 (由于抛出异常时基于表的方法的时间成本非常高。)
我知道Visual C ++不允许我退出基于表格的方法,但我希望自由世界更加保守,并将保留旧版本作为选项。看起来我错了,因为我找不到用sjlj编译的选项,不是在gcc中,也不是在clang中。我是否错过了这些选项,或者他们真的不再支持sjlj了?
有趣的是,gnat,基于gcc,looks to still keep the option。
答案 0 :(得分:0)
像Linux x86-32这样的平台已经转移到DW2 EH,但Windows仍然存在 坚持使用SJLJ EH。这是因为它在Windows中很常见 开发人员编写他们期望的Windows GUI应用程序 事件循环,用于捕获在其回调函数中抛出的异常。 不幸的是,这在Java等环境中会受到严重的惩罚 异常很常见。
但是,gcc可以是configured(也由@MarcGlisse指出)以启用sjlj异常。