C-do{..} while(0); 可以从代码中删除,排除嵌套 if else 的用法吗?

Ash*_*osh 0 c c++

做{...} while(0);

do{}while(0);的用法 在我的编码中使用它是因为,我不想使用长 if else 嵌套条件语句。我最终在失败时休息并退出循环,并确保我的函数至少被遍历 1 次。

现在,问题出在代码警告工具上,我在使用do{...}while(0); 时收到警告

嵌套 if(){} else{}的用法可读性较差,复杂度较高。并让代码有死代码。

如果我排除嵌套的 if(){} else{}do{} while(0); ,我们是否可以用其他方式让代码具有可理解的逻辑可读性?

if(status_of_funcA_ok != funcA())
{ //failure}
else if (status_of_funcB_ok != funcB())
{//failure}
else if (status_of_funcC_ok != funcC())
else
{//Great}

do{
   if(status_of_funcA_ok != funcA())
   break;
   if (status_of_funcB_ok != funcB())
   break;
   if (status_of_funcC_ok != funcC())
   break;

  }while(0);
Run Code Online (Sandbox Code Playgroud)

小智 5

将循环的完整逻辑移至do while{0}函数中,并将 替换breakreturn。并调用函数,而不是循环。

  1. 您不必担心美丽。
  2. 编译器也不必抱怨do while{0}.

更重要的是,通过添加一点模块化,程序可能会更具可读性。

无论如何,在执行此操作之前,最好检查一下您的编译器是否处于极其迂腐的模式,并且您可能希望将其关闭。这可能会消除警告。

SS。

PS:您似乎不需要该函数的返回值,但您可以通过它来获取哪个函数成功的线索。