C語言巨集定義

2021-06-28 03:16:25 字數 849 閱讀 8504

c語言有很多預處理命令,如包含命令#include,巨集定義命令#define。預處理命令在程式編譯之前被編譯器處理,而巨集定義也在此時被替換。

c或c++

語言源程式中允許用乙個識別符號來表示乙個字串,稱為「巨集」。

被定義為「巨集」的識別符號稱為「巨集名」。在編譯預處理時,對程式中所有出現的「巨集名」,都用巨集定義中的字串去代換,這稱為「巨集代換」或「巨集展開」。

在c或c

++語言中,「巨集」分為有引數和無引數兩種。

無引數巨集定義

無引數巨集就是不帶引數,其定義的一般形式為:

#define

識別符號 字串

「識別符號」為所定義的巨集名。「字串」可以是常數、表示式、格式串等。

例如:#define

a 0

有引數巨集定義

c語言允許巨集帶有引數。在巨集定義中的引數稱為形式引數,在巨集呼叫中的引數稱為實際引數。對帶引數的巨集,在呼叫中,不僅要巨集展開,而且要用實參去代換形參。

帶引數巨集定義的一般形式為:

#define

巨集名(形參表) 字串

例如:#define

m(y) y*y+3*y

注:

1 巨集可以多層呼叫,(巨集名往往是大寫的)

例如:#define scst _low('u', 1, 0)

其中,_low又是乙個巨集定義,與處理時巨集定義會被一層層替換,知道替換為最初定義的字串或函式為止。

2 函式或巨集前面有下滑線「_」的,往往是系統定義的函式或巨集,以與自定義函式或巨集區分。

C語言巨集定義

乙個巨集定義的作用域是從定義處到 undef處或檔案結尾。undef num 現在此處num沒有定義。1.ifdef num 如果num有巨集定義就編譯此處。else 如果num沒有巨集定義就編譯此處 endif 不論num 有沒有巨集都編譯,即判斷體已結束。ifndef num 如果num沒有巨集...

C語言(巨集定義)

巨集定義是c提供的三種預處理功能 巨集定義 檔案包含 條件編譯 的其中一種。c語言執行的流程 1 編譯 形成目標 obj 2 連線 將目標 與c函式庫連線合併,形成最終的可執行檔案 3 執行 巨集定義也叫做 巨集替換 預編譯指令 作用 使用define指令 1 定義標示,防止檔案重複引入 如 ifd...

C語言巨集定義

1 include2 include34 是 字串化 的意思,出現在巨集定義中的 是把跟在後面的引數轉換成乙個字串 5 define log error err fprintf stderr,err 67 是一種分隔連線方式,它的作用是先分隔,然後進行強制連線.8 define test type,...