【发布时间】:2011-09-01 14:13:38
【问题描述】:
基本问题,但想知道优化的方法。它是一个代码块,用于关闭多个进程的关闭例程。在所有情况下,它都应该尝试关闭所有进程和阶段,但保留失败值以返回。
Error_code result=PASS;
<some code>
for i 1 to 10
if((result = operation())!=PASS)
PRINT "FAILURE"
done
if((result = operation())!=PASS)
PRINT "FAILURE"
for i 1 to 10
if((result = operation())!=PASS)
PRINT "FAILURE"
done
return result;
现在的问题是如果最后一次迭代是通过,那么它返回一个PASS,因为操作应该在所有10次迭代中运行,如果失败,我们只需要返回错误代码。由于它实际上可以有 100 次失败,所以我这样编写代码:-
Error_code result=PASS;
Error_code tresult=PASS;
for i 1 to 10
if((result = operation())!=PASS) {
tresult = result;
PRINT "FAILURE"
}
if((result = operation())!=PASS) {
tresult = result;
PRINT "FAILURE"
}
for i 1 to 10
if((result = operation())!=PASS)
tresult = result;
PRINT "FAILURE"
done
if(tresult != result)
result = tresult;
return result;
它是唯一优化的解决方案,还是我们可以在这方面做得更好。我不能使用标志,因为它有超过 100 个错误变量.. 建议更好的方法..
【问题讨论】:
标签: c optimization embedded