微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我们在代码中有一个频繁重复的行,用于检查函数的返回状态,如果是故障,则立即返回状态.我想为这个定义一个宏:

#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
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐