zoukankan      html  css  js  c++  java
  • C语言中do...while(0)的妙用-避免goto

    使用goto的优雅并避免结构的混乱
    将要跳转到的语句用do{…}while(0) 包起来就可以。


    reference

     #defien N 10
    
     bool Execute()
     {
        // 分配资源
        int *p = (int *)malloc(N * sizeof(int));
        bool bOk = true;
    
        // 运行并进行错误处理
        bOk = func1();
        if(!bOk) 
        {
           free(p);   
           p = NULL;
           return false;
        }
    
        bOk = func2();
        if(!bOk) 
        {
           free(p);   
           p = NULL;
           return false;
        }
    
        bOk = func3();
        if(!bOk) 
        {
           free(p);    
           p = NULL;
           return false;
        }
    
        // ..........
    
        // 运行成功,释放资源并返回
         free(p);   
         p = NULL;
         return true;
     }
    #defien N 10
    
     bool Execute()
     {
        // 分配资源
        int *p = (int *)malloc(N * sizeof(int));
        bool bOk = true;
    
        // 运行并进行错误处理
        bOk = func1();
        if(!bOk) goto errorhandle;
    
        bOk = func2();
        if(!bOk) goto errorhandle;
    
        bOk = func3();
        if(!bOk) goto errorhandle;
    
        // ..........
    
        // 运行成功,释放资源并返回
         free(p);   
         p = NULL;
         return true;
    
         errorhandle:
         free(p);   
         p = NULL;
         return false; 
     }
    #defien N 10
    
     bool Execute()
     {
         //分配资源
         int *p = (int *)malloc(N * sizeof(int));
         bool bOK = true;
    
    
         do {
             //运行并进行错误处理
             bOK = fun1();
             if(!bOK) break;
    
             bOK = fun2();
             if(!bOK) break;
    
             bOK = fun3();
             if(!bOK) break;
    
             //.........
         }  while(0);
    
         //释放资源
    
         free(p);
         p = NULL;
         return bOK;
     }
  • 相关阅读:
    js 生成指定范围之内的随机数
    vue项目在ie浏览器打开做提示
    vue 瀑布流组件
    docker 移动文件到其他目录
    学习hyperf遇到的问题
    Linux 部署elasticsearch
    Git 常用命令
    Linux svn定时更新
    eclipse 导入web项目后,线程假死
    向量基本概念
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7348074.html
Copyright © 2011-2022 走看看