gpt4 book ai didi

c++ - 避免 "if failed cleanup"重复的模式

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

<分区>

我有一些看起来像这样的代码:

int myfunc()
{
blah a;
blah2 b;
blah3 c;
blah4 d;
blah5 e;

int iRes = DoSomething1(a, b, c);
if (iRes > 0)
{
clean1(a, b, c);
clean2(d, e);
log_error();
return 1;
}

iRes = DoSomething2(a, c, e);
if (iRes > 0)
{
clean1(a, b, c);
clean2(d, e);
log_error();
return 1;
}

...

iRes = DoSomething10(c, d, e);
if (iRes > 0)
{
clean1(a, b, c);
clean2(d, e);
log_error();
return 1;
}

clean1(a, b, c);
clean2(d, e);
return 0;
}

如何在 C 或 C++ 中避免重复 if (iRes > 0) { clean1(a, b, c);清洁 2(d, e);日志错误();返回 1; 在每个函数调用之后?


注释:

  • 在实际代码中,DoSomethingx()cleanx()这两个函数是API函数,不是我自己写的
  • 我想避免在 myfunct() 之外定义第二个函数 clean() 来处理清理 + 错误
  • 我考虑过使用预处理器宏,但我怀疑这是否适合这种情况

示例:

This code是这种情况的一个例子:实际上每 10 行代码 = 2 行仅用于实际做某事 + 8 行错误测试和清理......我们可以做得更好吗?

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