第六章 預處理器

2021-06-23 03:41:19 字數 544 閱讀 5789

巨集就是文字展開,實際中可以展開寫出來發現錯誤。

6.1 不能忽視巨集定義中的空格

6.2 巨集並不是函式

巨集定義乙個函式時,

1、要把每個引數用括號括起來

2、同時也要把整個表示式括起來。

3、要確保巨集中的引數沒有***

#define  max(a,b) ((a)>(b)?(a):(b))

max(big,x[i++]),這時++有可能被計算兩次,產生了***。

巨集有可能因為自增減操作產生***,也有可能產生非常龐大的表示式。

消除if else的***:

#define assert(e) \

((void)((e)||_assert_error(__file__,__line__)))

6.4 巨集並不是型別定義

#define t1 struct foo *

typedef struct foo *t2

t1 a,b;   

//宣告被擴充套件為struct foo *a,b;  b不是指標 。

t2 a,b;

第六章 預處理器

今天花了點時間把第六章看了。1.不能忽視巨集定義中的空格。與巨集呼叫相比,巨集定義顯得 暗藏機關 例如下列 define f x x 1 答案有兩種 1.f x 代表 x 1 2.f 代表 x x 1 正確答案是第二種,因為f與 x 之間多了乙個空格!這一規則不適用於巨集呼叫,只適用 於巨集定義,也...

第六章預處理

在程式設計中,為了方便,有的時候我們會使用巨集定義,首先,我們要明確一點,巨集定義與函式式不同的,巨集定義的功能就是替換,在編譯時替換掉 裡面的使用巨集的地方。如求兩個數中大的乙個 define max x,y x y x y 在使用巨集定義時間,我們要注意幾點 1.定義時中間不能有空格,如 def...

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...