首页 > 解决方案 > 如何在if条件中定义代码块

问题描述

我使用旧的 C 项目,应该进行一些更改它有很多宏.... 函数调用在那里定义为

#define myFunc(arg) myBaseFunc(arg)

bool myBaseFunc是一个函数,实际上有几个myBaseFunc (它是一种多态性)我需要添加一些参数正确性检查myFunc 实际上项目有:

#define checkArg(arg) {\
 // lot of code
}

我不能改变checkArg实现 1) 我想//

/*It is not correct if I do `if(myFunc(arg))`*/

#define myFunc(arg)\
checkArg(arg)\
myBaseFunc(arg)

2)我想

/*It is better...but compiler doesn`t like code block `{}` inside`if(myFunc(arg))`*/

#define myFunc(arg)(\
checkArg(arg),\
myBaseFunc(arg))

这种情况有解决方法吗

标签: cmacosif-statement

解决方案


一种可能的解决方案是在将 arg 传递给基本函数之前对其进行检查。但是,只有在只有一个论点时才有效。

#define myFunc(arg) myBaseFunc(checkArg(arg))

您的checkArg函数必须更改,以便它们返回与参数相同的值,例如

int checkArg(int value) {
  ... test stuff
  return value;
}

推荐阅读