您的位置:首页 > 产品设计 > UI/UE

BUIW 范例中常用的goto跳转函数模式

2011-05-18 14:47 197 查看
goto语句已经很少在C语言中使用了,然而为了书写简便,BUIW应用使用了具有ERR_TRY()和ERR_CHECK_PTR()的函数模式,此模式隐含地使用了goto语句,此函数模式特点如下:

1. 返回值为0时表示成功,其它为失败情况的枚举值
2. 需要在函数内部定义临时变量int nErr;
3. 具有ERR_CATCH: 的跳转标签
4. ERR_TRY()包含的函数的返回值同样要求:返回值为0时是成功,其它为失败情况的枚举值
5. 指针检查使用ERR_CHECK_PTR(pBuf);

函数框架如下:

// return:
// 0 – SUCCESS
// other - fail
int MyFunction (MyApp *pMe)
{
int nErr;
char *pBuf;

ERR_TRY( ISHELL_CreateInstance( pMe->pIShell, AEECLSID_FILEMGR, (void **)&pMe->m_pIFileMgr) );

pBuf = MALLOC(MY_BUF_SIZE);
ERR_CHECK_PTR(pBuf);

ERR_CATCH:
return nErr;
}


ERR_TRY()和ERR_CHECK_PTR()的宏定义如下:

#define ERR_CATCH        __errcatch
#define ERR_TRY(x)       do { nErr = (x); if (AEE_SUCCESS != nErr) goto ERR_CATCH; } while(0)
#define ERR_THROW(e)     do { nErr = (e); goto ERR_CATCH; } while(0)
#define ERR_CHECK_PTR(p)      if (NULL == p) ERR_THROW(AEE_EFAILED);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: