我想要干掉以下C代码:
if (i < SIZE_OF_V) {
if (V[i])
K = V[d];
else
K = V[d] = (expensive complicated call);
} else {
K = (expensive complicated call);
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?一个本地宏可以工作,但我更喜欢一个更现代的替代品.
你可以干脆做
if (i < SIZE_OF_V && V[i]) {
K = V[d];
} else {
K = (expensive complicated call);
if (i < SIZE_OF_V)
V[d] = K;
}
Run Code Online (Sandbox Code Playgroud)
你也可以expensive complicated call在你的if条件中从两个地方放入一个外部函数和callit :
int myExpensiveAndComplicatedCall() {
// Do things
}
if (i < SIZE_OF_V) {
if (V[i])
K = V[d];
else
K = V[d] = myExpensiveAndComplicatedCall();
} else {
K = myExpensiveAndComplicatedCall();
}
Run Code Online (Sandbox Code Playgroud)