概述
在while()循环中,假设使用错误机制时,针对不同的错误类型,返回不同的值时,需要注意。
可以在不同错误后,置位错误标志位,置位循环标志位,使之跳出循环,根据不同情况的错误标志位数值,跳出循环后返回不同的数值。
这样的做法可以在调试时,将断点设置在循坏外面,从而在不影响循环的情况下,观察返回值。
int hal_tgtp_dspburn_check(uint8_t tp)
{
uint8_t timesOfGerVer,errOfGetVer;
int retOfEcho;
uint16_t tempEchoCmdInfo;
uint16_t tempArg1,tempArg2,tempArg3,tempArg4;
uint32_t ctime, ntime;
uint8_t burnflag,loopwait;
int lastval;
int iRet;
timesOfGerVer=0;errOfGetVer = 0;burnflag=0;lastval=0;
ctime = arch_sys_mscount();
//clrrxbuf_canrxpkg(HAL_PCTPPKGCMD_CANID, CAN_CH_CMDMODE);
while(!burnflag){
/* loopwait=0;
while(!loopwait){
ctime = arch_sys_mscount();
if (ctime > ntime){
ntime = ctime + 500;
hal_tgtpburnstchk_send(tp);
loopwait=1;
}
}*/
retOfEcho = hal_tgtpnmlcmd_echowait(
&tempEchoCmdInfo,&tempArg1,&tempArg2,&tempArg3,&tempArg4);
if (retOfEcho<0){
timesOfGerVer++;
if (timesOfGerVer<waittimes){
continue;
}
errOfGetVer = 1;
burnflag = 1;
continue;
}
printf("process is %drn",tempArg2);
if (tempEchoCmdInfo!=TGTP_DSPPRG_BURSTCHK){ //Êý¾Ý²»¶Ô
errOfGetVer = 2;
burnflag = 1;
continue;
}
if (tempArg2< lastval||tempArg2>0x64){
errOfGetVer = 3;
burnflag = 1;
continue;
}
lastval=tempArg2;
if ((tempArg2== TGTP_DSPPRG_PROCESS)&&(errOfGetVer==0)){
errOfGetVer = 0;
burnflag = 1;
continue;
}
}
iRet = 0;
if (errOfGetVer!=0){ //³¬Ê±
if (errOfGetVer == 1){
iRet = -1;
}
else if (errOfGetVer == 2){
iRet = -2;
}
else if (errOfGetVer == 3){
iRet = -3;
}
}
else{
iRet = 1;
}
return iRet;
}
最后
以上就是超帅野狼为你收集整理的while循环跳出返回值技巧的全部内容,希望文章能够帮你解决while循环跳出返回值技巧所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复