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