我使用旧的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))


有没有针对这种情况的解决方法

最佳答案

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

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


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

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

08-05 23:59
查看更多