c++ - 无法理解是否在 #define 中

标签 c++ c

谁能帮我理解这行的意思?

我知道这是一种宏观结构,但是 , 在代码中有什么建议??

#define ReturnErr(fCall) if (iErr = (fCall), (iErr != NO_ERRORS)) {return iErr;}

最佳答案

一个合格的猜测是这个宏应该像这样使用:

err_t func (void)
{
  err_t iErr;

  ReturnErr(some_function());
  ...

  return NO_ERRORS;
}

在这种情况下宏扩展为:

err_t func (void)
{
  err_t iErr;

  if(iErr = some_function(), iErr != NO_ERRORS) { return iErr; }
  ...

  return NO_ERRORS;
}

这反过来只是一种不必要的混淆方式

err_t func (void)
{
  err_t iErr;

  iErr = some_function();
  if(iErr != NO_ERRORS)
  { 
    return iErr; 
  }
  ...

  return NO_ERRORS;
}

换句话说,宏很可能是一次又一次地重复相同的错误处理代码的尝试。

关于c++ - 无法理解是否在 #define 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22861253/

相关文章:

c - 在C中的结构中填充动态数组

c - 为什么不匹配的原型(prototype)和定义与空参数列表在 GCC 和 Clang 中给出不同的结果?

c++ - 为什么两个相同数组的元素彼此相等

c++ - 从 Superpowered CrossExample for Android 解释 C++ 代码

c++ - 与自动变量和静态变量相关的混淆

c++ - 用子类覆盖基类中定义的函数

objective-c - 在 C/Objective-C 中将返回值放在括号中的目的是什么?

c++ - 奇怪的重新分配行为

c - 尝试创建一个计算 C 中非字母符号的模块

c++ - boost::interprocess 互斥量和条件变量