今天看專案原始碼的時候發現有些地方用了do{} while(false)的用法,查了下發現這樣確實有些優點,mark下。
1.最重要的優點,用在略微複雜的巨集定義中。
#define ab1 a; b; //x, 下面語句b不能被執行: if (cond) ab1;
#define ab2 //
x, 下面語句編譯出錯:if (cond) ab2; else ...;
#define ab3 a, b //
x, 有運算子優先順序問題
#define ab4 do while (0)
2.當你執行一段**到一半,想跳過剩下的一半的時候,如果你正處於do while迴圈中,則能用break達到這個目的。如下偽**:
intfoo()
避免goto語句的話,實用do while(false)就能很好的解決。
intfoo()
while(0
); free(ptr);
return0;
}
do while false 技巧揭密
do dwsize msg hdr len dwstatus gu recvall sessionsocket szprotobuffer,dwsize if 0 dwstatus if pmsghdr dwacknumber dwacknumber if pmsghdr dwretstatus 0...
do while false 結構的妙用
今天看原始碼的時候,發現某個框架的原始碼裡面經常出現如下片段 do while false 我對於do while false 結構的使用,在此之前無非兩種,第一種是基本用法,也就是把它當成迴圈結構使用,和for while 沒太大區別 還有一種用法是用在巨集定義中,如下所示 define larg...
iOS開發之NSString的幾條實用技巧
常量字串 nsstring string i am an iosdevtip 常用建立方法 nsstring string nsstring alloc init string i am an iosdevtip too 用initwithstring建立字串 nsstring string nss...