哪一个更好?do {} while(0); 或者转到xy;

Pap*_*ppu 3 c coding-style goto do-while

我有两段代码:

做while循环:

do
{
    errorflag=0;
    ...
    if(cond1)
    {
        errorFlag=12;
        break;   // Error Conditions
    }
    .
    .            // Processing
    .
    if(cond2)  
    {
        errorflag=56;
        break;
    }
     .
     .

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

转到标签:

errorflag=0;
if(cond1)
{
     errorflag=12;
     goto xy;
 .
 .
 .
 .
if(Cond2)
{
     errorflag=56;
     goto xy;
}
.
.
.

xy:
Run Code Online (Sandbox Code Playgroud)

哪一个更好?请详细说明原因?或者有更好的方法吗?我们正在优化代码.我们最关注这些大循环.是装配级别,没有那么多的优化范围.请提供您的意见.

我不喜欢使用else - 如果从那以后,它再次成为检查一个条件的开销.所以当出现问题时直接退出.

我觉得在这次编辑之后我的问题是有道理的

提前致谢

Vic*_*let 13

选项3:

void frobnicate(arguments) 
{
  if (cond1) return;
  if (cond2) return; 

  ...
}

frobnicate(the_arguments)
Run Code Online (Sandbox Code Playgroud)

选择一个有意义的名称,并保持简短.

  • 虚拟-1表示没有回答问题.你的`......`应该在两个ifs之间. (2认同)

Don*_*ows 5

它们生成相同的代码(假设编译器值得考虑),因此差异是其中一个最容易理解,以及do/while是否会干扰其他循环结构.如果存在此类干扰,请使用gotos.否则不要; 他们不太清楚(通常).

仔细查看您的功能是否过于复杂,应该重构为多个功能,目的更明确,控制流程更简单.