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,...