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)
选择一个有意义的名称,并保持简短.
它们生成相同的代码(假设编译器值得考虑),因此差异是其中一个最容易理解,以及do/while是否会干扰其他循环结构.如果存在此类干扰,请使用gotos.否则不要; 他们不太清楚(通常).
仔细查看您的功能是否过于复杂,应该重构为多个功能,目的更明确,控制流程更简单.