C語言中do...while(0)的妙用-避免goto

來源:互聯網
上載者:User

標籤:article   ref   reference   track   mod   www.   釋放   ide   rac   

使用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; }

C語言中do...while(0)的妙用-避免goto

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.