程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 使用do{ } while(0)的好處

使用do{ } while(0)的好處

編輯:C++入門知識

看到過一些程序中或者宏中使用do{} while (0)覺得挺奇怪,不知道為什麼這麼寫,就百度了一下... 看到一個比較好的帖子,給大家分享下! 我遇見的宏 [cpp]   #define LFW(x, y) do { x = websGetVar(wp, T(#y), T("")); } while(0)   [cpp]   _Api()    {       do        {           //do something        }while(0);    }       使用do{ } while(0)的好處 1.替代{},實現局部作用域.在一些C的實現裡也可以用. 2.避免使用GOTO,用break做跳出. 當你執行一段代碼到一半,想跳過剩下的一半的時候,如果你正處於do while循環中,則能用break達到這個目的。如下偽代碼: [cpp]  do   {     我執行     我執行。。     我再執行。。。     if (有什麼條件滿足了我)     {       呀,我想跳到另外一段代碼了,剩下的不執行了,可是不建議用goto語句,怎麼辦呢?        break;/*看我的*/     }     我有可能被執行     我有可能被執行。     我有可能被執行。。    }while(false)   想跳到這行來,使用break不是很方便嗎?     假如啊a, b分別是兩條C語句,定義一個順序執行他們的宏有幾種寫法,比如 [cpp]  #define AB1    a; b;     // x, 下面語句b不能被執行: if (cond) AB1;   #define AB2    { a; b; } // x, 下面語句編譯出錯:if (cond) AB2; else ...;   #define AB3    a, b      // x, 有運算符優先級問題   #define AB4    do { a; b; } while (0)     前面幾個都是有問題的,只有do while(0)解決得比較好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved