c語言裡,關於巨集定義的使用

2021-07-05 10:25:17 字數 463 閱讀 3514

巨集定義最關鍵的是要注意它只是乙個文字替換,不注意的話,很容易引起歧義,看下面一段**:

#include

#define  m( x )   ( x*x )

int  main()

int a, b= 3;

a = m( b+2 );

printf ("%d\n" , a );

return 0;

這裡的 m 是想要得到 x 的平方,而在程式中呼叫的引數為 b+2 ,原本想將 a 賦值為 (b+2)*(b+2),也就是 25 ,但是由於巨集定義是展開在預處理時期,也就是在編譯之前,此時 b 並沒有賦值,這時候的 b 只是乙個符號。 因此在程式中被展開為: (b+2*b+2); 所以程式執行後的結果為 a 的值為11。

所以為了達到原來的目的,我們可以把巨集定義 m 改為:

#define  m(x)  ( (x) * (x) )

就可以變為平方的形式了

C語言巨集定義的使用

寫好c語言,漂亮的巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得巨集定義。1,防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 2,重新定義一些型別,防止由於各種平台和編譯...

C語言巨集定義 基本使用

2.巨集展開過程 巨集定義分為2類,不帶引數的巨集定義 和 帶引數的巨集定義 形式 使用乙個指定的識別符號來代表乙個字串 define 識別符號 字串例如 define pi 3.14159265作用 程式中但凡使用到pi的地方全部都會用3.14159265來替換,主要用途使用乙個簡單識別符號來代替...

C語言特殊巨集定義的使用

1 是將字母變成字串的巨集定義 用法 define n a a printf s n fdaf 輸出為fdaf。不可能做到將乙個變數通過這個操作變成字串 比如int a 5,不能n a 得到 5 得到的只是 a 但是巨集定義的常量可以。需要乙個中間巨集如下 define n a n a define...