C語言 有參巨集

2021-09-10 15:49:43 字數 1495 閱讀 5377

說明:

紅色箭頭表示的意思是:

巨集展開:形參用實參換,其它字元保留

巨集體及各形參外一般應加括號()

1.帶參巨集定義的一般格式

#define 巨集名(形參表) 語言符號字串

2.帶參巨集的呼叫和巨集展開

(1)呼叫格式:巨集名(實參表)

(2)巨集展開:用巨集呼叫提供的實參字串,直接置換巨集定義命令列中、相應形參字串,非形參字元保持不變。

3.(1)定義有參巨集時,巨集名與左圓括號之間不能留有空格否則,c編譯系統將空格以後的所有字元均作為替代字串,而將該巨集視為無參巨集。

(2)有參巨集的展開,只是將實參作為字串,簡單地置換形參字串,而不做任何語法檢查。在定義有參巨集時,在所有形參外和整個字串外,均加一對圓括號。也就是說,巨集體及各形參外一般應加括號()

有參巨集的展開例項:

注意:嚴格按照上述例項格式進行巨集展開,不要想當然寫成(x+y)*(x+y)!!!

1)呼叫有參函式時,是先求出實參的值,然後再複製乙份給形參。而展開有參巨集時,只是將實參簡單地置換形參。

2)在有參函式中,形參是有型別的,所以要求實參的型別與其一致;而在有參巨集中,形參是沒有型別資訊的,因此用於置換的實參,什麼型別都可以。有時,可利用有參巨集的這一特性,實現通用函式功能。

3)使用有參函式,無論呼叫多少次,都不會使目標程式變長,但每次呼叫都要占用系統時間進行呼叫現場保護和現場恢復;而使用有參巨集,由於巨集展開是在編譯時進行的,所以不佔執行時間,但是每引用1次,都會使目標程式增大1次。

C語言 有參巨集

說明 紅線的意義 巨集展開 形參用實參換,其它字元保留 巨集體及各形參外一般應加括號 1 帶參巨集定義的一般格式 define 巨集名 形參表 語言符號字串 2 帶參巨集的呼叫和巨集展開 1 呼叫格式 巨集名 實參表 2 巨集展開 用巨集呼叫提供的實參字串,直接置換巨集定義命令列中 相應形參字串,非...

巨集定義(無參,有參,巨集函式)(詳細介紹)

以符號 開頭的命令,如 define n 10 define 這些命令不是c語言本身的組成部分,而是由c編譯系統提供的。在通常的編譯 詞法和語法分析 生成 優化等 之前,編譯系統要預先對這些命令進行處理,因此稱為 編譯預處理 命令。編譯預處理可以改善程式設計環境,提高程式設計效率,有助於編寫易移植 ...

C語言變參函式巨集定義分析

在c語言變參函式中總是會用到下面幾個巨集 0 define adnbnd sizeof acpi native int 1 1 define bnd x,bnd sizeof x bnd bnd 2 define va arg ap,t t ap bnd t,aupbnd bnd t,adnbnd ...