2014-01-24 79 views
0

我在代碼中使用SEH處理程序,如: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 

回答

1

這只是錯誤消息說的話:你不能在需要調用析構函數的函數中使用SEH。您始終可以將該__try/__except塊放入子功能中。

編輯:您可以使該函數爲靜態,但在我的測試中,編譯器沒有內聯它,甚至沒有__forceinline