C2712:不能在需要对象展开的函数中使用__try

时间:2012-05-16 17:52:09

标签: c++ visual-c++ seh

我正在将用VC ++ 6.0编写的软件迁移到VS 2010 / VC ++ 2010。我有一个不能在调试模式下编译的项目。我有:

LBSC_AppUserInfoList *          
LBSC_Session::GetUsersInfo( const LBSC_Ticket *pTicket )
{
    TSROut_GetUsersInfo sOut;
    C_Buffer            *pcbRet = NULL;
    TSRIn_TicketPar     InPar;
//...
    ClntFree( (void *)sOut.szBuffer );  // dealoca o que veio do RPC

        return( pList );
} // C2712 - Cannot use __try in functions that require object unwinding

我还没提到__try

你不明白吗?

1 个答案:

答案 0 :(得分:3)

这里最可能的问题似乎是ClntFree实际上是一个扩展为使用SEH __try块的宏。表面上没有任何其他内容似乎有意义,因为宏观和宏似乎是最有可能的原因。

您是否看过ClntFree的定义,看它是不是宏?