我使用旧的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))
这种情况下是否有解决方法
答案 0 :(得分:1)
我认为可能是这样,但是您需要知道参数类型:
df1 <- structure(list(col = c("\"val\":\"O;P;Q8;S\"}]", "\"val\":\"P;V;I9;J\"}]",
"\"val\":\"Z;A;G8;N\"}]")), class = "data.frame", row.names = c(NA,
-3L))
尽管正如我所说,它仅限于了解类型。我刚刚向项目添加了一个函数,通过运行currEnv.SetInt("_Rotation", rotVal); //e.g., 45
然后运行DynamicGI.UpdateEnvironment();
来检查您的代码。这种方法很简单,但是有很大的缺点。
答案 1 :(得分:1)
一个可能的解决方案是在将arg传递给基本函数之前对其进行检查。但是,只有在只有一个参数的情况下,这种方法才有效。
switch ($order->status) {
case "preparing" : $messageMiddle = " your order is being prepared. Make your way towards the store.";
break;
case "complete" : $messageMiddle = " your order is done! Please show your order-code at the store.";
break;
default : $messageMiddle = " thank you for ordering ";
break;
}
必须更改您的#define myFunc(arg) myBaseFunc(checkArg(arg))
函数,以便它们返回与参数相同的值,例如
checkArg