加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 此宏存在问题 – 检查状态并在失败时返回

发布时间:2020-12-16 09:31:40 所属栏目:百科 来源:网络整理
导读:我们在代码中有一个频繁重复的行,用于检查函数的返回状态,如果是故障,则立即返回状态.我想为这个定义一个宏: #define RETURN_IF_FAILED(x) { int stat = (x); if (FAILED(stat)) return stat; } 局部变量是因为参数x可以是函数调用. 我知道有一些奇怪的使用
我们在代码中有一个频繁重复的行,用于检查函数的返回状态,如果是故障,则立即返回状态.我想为这个定义一个宏:

#define RETURN_IF_FAILED(x) { int stat = (x); if (FAILED(stat)) return stat; }

局部变量是因为参数x可以是函数调用.

我知道有一些奇怪的使用宏的工件,我不是很熟练,我想问你是否看到这个宏有任何问题.谢谢.

(并且,请不要建议使用例外 – 我自己讨厌这种风格,但这就是它在这里完成的方式)

解决方法

我想稍微修改一下;用do {}括起来,而像这样(0):

#define RETURN_IF_FAILED(x) do { int stat = (x); if (FAILED(stat)) return stat; } while(0)

现在您可以使用此MACRO,如下所示:

if (SomeCondition)
  RETURN_IF_FAILED(x); //<--- note the "usual" semicolon!
else
{
   //some code
}

使用您的版本,此代码根本不可用.的;宏之后会导致你的版本出现问题!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读