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

2021-08-18 02:58:54 字數 824 閱讀 3466

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 程式時該識別符號被定義。要用到這幾個巨集定...