gpt4 book ai didi

c - C Embedded中错误处理的优化方式

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:06 25 4
gpt4 key购买 nike

基本问题,但想知道优化的方法。它是一个关闭例程的代码块,有多个进程要关闭。在所有情况下,它都应该尝试关闭所有进程和阶段,但保留失败值以返回。

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 个错误变量。建议任何更好的方法..

最佳答案

您需要为链接列表或数组中的每个错误代码动态分配空间,然后将列表传递回任何需要知道结果的地方。

您可以为每个正在关闭的进程设置一个代码,并在其中包含“OK”情况,或者您可以将进程 ID 和错误代码包含在一起,并且仅在出现错误时包含它们。

例如:

errorList = NULL;
for i 1 to 10
if((result = operation())!=PASS) {
appendToList(errorList, i, result)
}
if(errorList != NULL) {
result = ERROR;
} else {
result = PASS;
}
return result;

(注意:虽然您说过您是用 C 语言编写的,但您的代码片段看起来更像是伪代码,所以我在这里就是这样处理的。您需要编写适当的代码来附加错误代码到您的列表)。

关于c - C Embedded中错误处理的优化方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7271617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com