第3章 3 do while 0 語句

2022-09-18 14:21:16 字數 1310 閱讀 4727

do {} while (0) 主要在巨集定義後為語句中使用,比如:

#define macrofun(a, b, c)    \

do while (0)

首先,我們定義乙個簡單的巨集:

#define safe_free(p)  free(p); p = null;
那麼對於如下的**

if (null != p)

safe_free(p);

else

; // do something

就會被展開成

if (null != p)

free(p); p = null;;

else

; // do something

else找不到if

就算沒有else分支,p = null;無論如何都會執行,這和我們的邏輯不符

出現了兩個分號。

其實我們把巨集定義引用後面的分號刪掉,再把巨集定義後的語句用「{}」括起來也可以解決,也就是這樣:

#define safe_free(p)  

if (null != p)

safe_free(p)

else

; // do something

就展開成了

if (null != p)

else

; // do something

好的,問題解決了,但是你看到上面的**不難受嗎???總想加個分號上去!而且我敲**的時候還得注意我到底呼叫的是函式,還是引用的巨集?分號到底加是不加?多累啊。

然而,使用 do {} while (0) 就完美解決了上面的所有問題。請看:

#define safe_free(p)  do  while (0)

if (null != p)

safe_free(p);

else

; // do something

就展開成了

第3章 流程控制語句

順序結構就是程式從上到下逐行地執行,中間沒有任何判斷和跳轉。if結構格式一 if 條件表示式 if結構格式二 格式二可以與三元運算子互換 if 條件表示式 else if結構格式三 if 條件表示式1 else if 條件表示式2 else if 條件表示式n else if巢狀if 1 switc...

第3章 Python常用語句

判斷語句 和c c 一樣,用if表示條件成立做一件事,條件不成立做一件事情。這個如果有基礎並不難,主要我想畫個圖出來!1 if語句和if else 語句 下面舉幾個例子 if表示如果,else表示否則,可以理解成成立做什麼,否則就怎麼樣,當然不一定要加else,但是如果有else一定要加if,在c ...

第3章 函式

變數本質上是佔位符 def 函式名 引數1,引數2,引數n 函式體 語句塊 這裡的引數沒有型別,只有物件才有型別。python中為物件編寫介面,而不是為資料型別編寫。result add 3,4 add x,y 被執行之前,在計算機內是不存在的,直到 執行到這裡的時候,在計算機中就建立起來了乙個物件...