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;
     }
  • 相关阅读:
    List三个子类的特点
    三种迭代是否可以删除
    Vector
    LinkedList
    ArrayList
    ListIterator
    ConcurrentModificationException并发修改异常
    List
    Collection
    数组转换成集合
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7348074.html
Copyright © 2011-2022 走看看