深入理解php內核閱讀1
do{ }while(0)使用的解釋
do{ }while(0)寫法的目的主要是為了程序基礎函數的健壯性和通用性,和一些代碼的靈活使用。
do{ }while(0)寫法會讓內部的代碼執行一次後退出,如果不使用這種寫法,會對那些如if語句後面不緊跟{}的程序員造成編譯錯誤,而對那些使用{}編程習慣的則無影響。
舉例:
#define SAFE_DELETE(p) do{ delete p; p = NULL} while(0) //1.使用 do{ }while(0)寫法
#define SAFE_DELETE(p) { delete p; p = NULL} //2.使用{}寫法
#define SAFE_DELETE(p) delete p; p = NULL //3.什麼都不使用的寫法
if(NULL != p) SAFE_DELETE(p) //1.無問題 2.無問題 3.有問題,else前面有2條語句,編譯失敗
else ...do sth...
if(NULL != p) SAFE_DELETE(p); //1.無問題 2.有問題,括號後面跟;編譯失敗 3.有問題,else前面有2條 else ...do sth... //語句,編譯失敗
if(NULL != p) {SAFE_DELETE(p)} //1.無問題 2.無問題 3.無問題
else ...do sth...