札記 帶參巨集定義

2021-10-23 00:19:50 字數 1062 閱讀 3456

(1)帶參巨集定義中,巨集名和形參表之間不能有空格出現

(2)巨集定義中不存在值傳遞,它只是乙個符號的替換過程

(3)帶參巨集定義中,形參不分配記憶體空間,因此不必做型別定義

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

void

main

(void

)

(4)在巨集定義中的形參是識別符號,而巨集呼叫中的實參可以是表示式

#define say(y) (y)  

//y可以是乙個表示式

void

main()

printf

("\n\t%s\n\n"

,say)

;}

(5)在巨集定義中,字串內的形參通常要用括號括起來,以避免出錯

#define sq(y) (y)*(y)

//#define sq(y) y*y (不帶括號)

void

main()

所以在程式設計過程中應盡量避免使用過多的巨集定義,因為在巨集呼叫時由於優先順序的存在會很容易出現邏輯錯誤

(6)帶引數的巨集和帶引數的函式很相似,但有本質的不同,除以上各點外,把同一表示式用函式處理和用巨集處理的結果有可能是不同的

intsq(

int y)

;void

main()

}intsq(

int y)

#define sq(y) ( (y)*(y) )

void

main()

}//output: 2 12 30

(7)巨集定義可以用來定義多個語句,在巨集呼叫時,把這些語句又代換到源程式內

#define str(s1,s2,s3,sum) strcat(strcat(strcat(sum,s1),s2),s3);

void

main()

//strcat(str1,str2)函式將字串str2貼上到str1的後面

C之帶參巨集定義

1.帶參巨集定義跟前面文章有所區別,不是簡單的數值或者字串替換,是要進行引數替換。2.本人理解,帶參巨集是很方便的,一些固定輸入和輸出咱們可以選擇帶參巨集,類似工程中多出要計算兩數相乘,這種情況我們就可以使用帶參巨集。define s a,b a b qdebug 2,3 6 define pi 3...

帶參巨集定義的思考

帶有引數的巨集定義 巨集定義是一種替換,所以返回的通常是帶有運算子表示式.不能返回語句.通常用的一些運算子 三目運算子 代替if語句 特殊建議 為了保證準確性,在 中放入變數 下面是一些巨集定義的例子 1,判斷字元是不是10進 值的 數字 define decchk c c 0 c 9 2,判斷字元...

帶參巨集定義的正確標準定義

include define add x x x define add x x x 正確標準定義 int main int m 1,n 2,k 3 int sum add m n k int sum m n m n k 實際替換 int sum add m n k 預期目的 printf sum d...