編譯預處理

2021-07-15 14:40:02 字數 993 閱讀 9893

1)定義常量與命令

避免幻數

定義巨集時,避免以__開頭,以防與內建巨集定義衝突。

巨集和列舉的區別

a.列舉常量是實體常量中的一種,但巨集不是實體

b.列舉常量屬於常量,但巨集不是常量

c.列舉常量具有型別,但巨集沒有型別。列舉型別主要用於限制性輸入,巨集只是預處理替換符

d.列舉只可以表示整型,巨集可以定義所有。

2.巨集函式(函式式巨集定義)

#define

#define max(a,b) a+b

int main()

自定義函式和巨集函式的區別

a.函式式巨集定義的引數沒有型別,預處理時只做形式上的替換,而不做引數型別檢查,所以傳參時要小心。

b.巨集函式不安全,複雜的函式難以實現。

c.巨集函式省去了分配,提高了執行效率

巨集函式用編譯時間換記憶體空間,即(用時間換空間)

inline:內斂函式,用空間換時間

3.內建巨集函式

func(顯示函式名)

line(顯示行號)

time(顯示時間)

date(顯示時間)

4.條件編譯指令

1)#if、/#endif、/#else、/#elif指令

2)#ifdef,#ifndef的作用:防止標頭檔案重複包含帶來的重複定義

#ifndef funca_h

#define funca_h

//標頭檔案內容

#endif

編譯預處理

所謂編譯預處理,就是在c源程式的編譯之前,由編譯預處理程式對這些編譯預處理命令進行處理的過程。最常見的就是常量的替換。編譯預處理按功能可以分為巨集定義,檔案包含和條件編譯三類。編譯預處理命令以 開頭,下面進行詳細說明 一.巨集定義與符號常量 1.無參巨集定義 define 識別符號 字串 1 巨集名...

編譯預處理

1.巨集定義指令 1 定義變數與命令 避免幻數 在巨集定義命名時,盡量能清楚的表明功能,大寫 不能以 開頭易與內建巨集衝突 2 定義巨集函式 define max a,b a b a b int num max 6,5 6 5 6 5 用編譯時間換記憶體空間的是巨集函式 用記憶體空間換執行空間的是內...

編譯預處理

我們知道在編譯過程中的預處理階段會進行標頭檔案展開,巨集替換以及條件編譯。1.標頭檔案展開 首先是標頭檔案展開,標頭檔案的前面都有 符號,其實是理指令。理指令是以 號開頭的 行。號必須是該行除了任何空白字元外的第乙個字元。後是指令關鍵字,在關鍵字和 號 之間允許存在任意個數的空白字元。整行語句構成了...