我在代码中使用了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
答案 0 :(得分:1)
这正是错误消息所说的:您不能在需要调用析构函数的函数中使用SEH。您始终可以将__try
/ __except
块放入子功能中。
编辑:您可以将该功能设为静态,但在我的测试中,编译器没有内联它,甚至不使用__forceinline
。