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
}

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...