0

是否可以使用 VC(最好是最新版本之一)并使用未通过 SEH 实现的 C++ 异常?

注意 - 我的意思不是使用 C++ catch 子句 (/Eha \ /Ehsc) 来捕获 SEH 异常,我的意思是使用 C++ 异常而不让 SEH 异常在后台飞来飞去。

4

1 回答 1

0

默认情况下,C++ 异常建立在 SEH 之上。

可以更改这一点,但是您必须重新编写运行时的大部分内容,并自己实现帧处理逻辑(读作:大量程序集)。

由于 32 位和 64 位构建(对于 x86)中堆栈帧布局之间的巨大差异,您将无法在它们之间重用很多代码(64 位 EH 还需要深入研究PE 图像)。

也就是说,除非真的需要,否则只要像在其他任何地方一样使用异常来确保您的代码尽可能可移植。在大多数情况下,您可以假装 SEH 甚至不存在。

于 2014-11-14T21:05:20.670 回答