0

我在我的代码中使用了 SEH 处理程序,如下所示:

__try
{
   // code...
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
  TRACE(_T("Exception"));
}

但得到以下编译器错误:

e:\test.cpp(3310): warning C4509: nonstandard extension used: 'CMyClass::Test' uses SEH and 'iterator' has destructor
e:\test.cpp(3290): see declaration of 'iterator'
e:\test.cpp(3450): error C2712: Cannot use __try in functions that require object unwinding
4

1 回答 1

1

这正是错误消息所说的:您不能在需要调用析构函数的函数中使用 SEH。您始终可以将该__try/__except块放入子功能中。

编辑:您可以将该函数设为静态,但在我的测试中,编译器没有内联它,即使是__forceinline.

于 2014-02-19T11:32:49.300 回答