1

文档指出“使用 _set_se_translator 时必须使用 /EHa。”。
我的问题是:应该将 /EHa 用于项目中的所有文件/项目中捕获异常的所有文件,还是仅用于调用 _set_se_translator 的文件中?

4

2 回答 2

2

在检查之后,我必须不同意之前所说的所有需要​​用 /EHa 编译的实例。我做了一个小程序:

  • 崩溃代码

      __declspec(dllexport) void crashMe()  {    *((int*)0)=0;  } 
    

在完全没有任何异常处理的情况下编译的 DLL

  • 在 try/catch 中的其他地方调用代码

然后

  • 除非调用代码使用 /EHa 编译,否则程序将崩溃
  • 没有_set_se_translator异常只能被捕获catch(...)
于 2011-11-07T09:08:22.910 回答
2

您不仅需要捕获异常的函数,还需要抛出和传播异常的函数。对自身的实际调用_set_se_translator可能不需要用/Eha编译,但为什么会不一致呢?

于 2011-11-04T13:52:42.253 回答