1、#
#是將字母變成字串的巨集定義
用法:
#define n(a) #a
printf("%s",n(fdaf));
輸出為fdaf。不可能做到將乙個變數通過這個操作變成字串(比如int a =5,不能n(a)得到「5」,得到的只是「a」),但是巨集定義的常量可以。需要乙個中間巨集如下:
#define n(a) _n(a)
#define _n(a) #a
#define c 3
printf("%s",n(c));
輸出是3,如果不用中間巨集輸出是c。
2、##
##是將兩個字串拼接在一起的巨集定義
用法:
#define c(s1,s2) s1##s2
printf("%s","fda","134");
輸出為fda134。同樣不能通過這個巨集將兩個變數貼上在一起(比如char *a="fad";char*b+"41";c(a,b),得到的只是「ab」),同樣可以將巨集定義的常亮貼上在一起。同樣使用中間巨集:
#define c(s1,s2) _c(s1,s2)
#define _c(s1,s2) s1##s2
#define a "fda"
#define b "431"
printf("%s",c(a,b));
輸出為fda431,如果不用直接報錯。
3、#@
#@不是gcc支援的語法不介紹。
C語言巨集定義的使用
寫好c語言,漂亮的巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得巨集定義。1,防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 2,重新定義一些型別,防止由於各種平台和編譯...
C語言巨集定義 基本使用
2.巨集展開過程 巨集定義分為2類,不帶引數的巨集定義 和 帶引數的巨集定義 形式 使用乙個指定的識別符號來代表乙個字串 define 識別符號 字串例如 define pi 3.14159265作用 程式中但凡使用到pi的地方全部都會用3.14159265來替換,主要用途使用乙個簡單識別符號來代替...
C語言預定義巨集的使用
ansic標準定義的6種c語言預定義巨集 line 表示當前源 的行號 file 表示當前原始檔的名稱 date 表示當前的編譯日期 time 表示當前的編譯時間 stdc 當要求程式嚴格遵循ansi c標準時該標識被賦值為1 cplusplus 當編寫c 程式時該識別符號被定義。要用到這幾個巨集定...