GOTO语句使用方法

1、先上一段代码

HI_S32 SAMPLE_VDEC_PIP(HI_VOID)
{
    s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
    if(s32Ret != HI_SUCCESS)
    {
        goto END1;
    }
    /************************************************/
    if(s32Ret != HI_SUCCESS)
    {
        goto END2;
    }
  /************************************************/
    s32Ret = SAMPLE_COMM_VDEC_Start(u32VdCnt, &stVdecChnAttr[0]);
    if(s32Ret != HI_SUCCESS)
    {
        goto END3;
    }
  /************************************************/
    if(s32Ret != HI_SUCCESS)
    {
        goto END4;
    }
    Sample_COMM_SetCrop(0);
    /************************************************/
     if(s32Ret != HI_SUCCESS)
    {
            goto END5;
    }
  /************************************************/
END5:
 s32Ret = SAMPLE_COMM_VDEC_UnBindVpss(i, i);
 
END4:
    SAMPLE_COMM_VO_StopChn(VoLayer, VO_MODE_1MUX);

END3:
    SAMPLE_COMM_VPSS_Stop(u32GrpCnt, VPSS_CHN0);
return s32Ret;
END2:
    SAMPLE_COMM_VDEC_Stop(u32VdCnt);

END1:
    SAMPLE_COMM_SYS_Exit();
    return s32Ret;
}

goto将会改变程序的运行顺序,C语言,代码是顺序执行的,如果goto将会跳过下面的代码
找到lable标签,如果lable没有加return,将会继续支持下一个lable的代码,如果加了return,直接结束函数的运行

注意一点是,在goto语句下面的代码不能定义变量,否则编译器通不过,
解决办法可以加{ },
如:

int test()
{
	goto lable1;
	//定义了变量,需加括号,否则报错
	{
		int i;
		int m;
	}
	lable1:
		run();
	lable2:
		returnreturn}

注意一个坑,如果没有加return,将会继续执行所有lable,按顺序执行,这是容易忽略的

HI_S32 SAMPLE_VDEC_PIP(HI_VOID)
{
	while1{
	    s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
	    if(s32Ret != HI_SUCCESS)
	    {
	        goto END1;
	    }
	    s32Ret = SAMPLE_COMM_SYS_Init(&stVbConf);
	    if(s32Ret != HI_SUCCESS)
	    {
	        goto END2;
	    }
		continue;

		END2:
    		SAMPLE_COMM_VDEC_Stop(u32VdCnt);	
			continue//没有加return,将会继续执行下面退出,如果不想执行,需要加continue		
		END1:
  	  		SAMPLE_COMM_SYS_Exit();
    	return s32Ret;
    
    }  	
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值