我是靠谱客的博主 超帅野狼,最近开发中收集的这篇文章主要介绍while循环跳出返回值技巧,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在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循环跳出返回值技巧所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部