1.巨集
1.1不帶引數的巨集:
形式:#denfine 使用者識別符號 字串
(1)#define 使用者識別符號 字串
eg:#define x 5
(2)#define 使用者識別符號 表示式
eg:#define x 3*y-1
(3)#define 使用者識別符號 字串
eg:#define p printf
則p()為printf()函式,可呼叫p()輸出資訊
注:1.巨集定義不是語句,不需要在後面加分號,如果有分號,表示巨集名替換時包括後面的分號。
2.巨集定義可以層疊定義:eg:#define pi 3.1415
#define s pi*r*r
1.2帶引數的巨集
定義:#define 巨集名 字串
eg:#define s(x,y) x*y
注:1.帶引數的巨集的使用方式與帶引數的函式類似,呼叫時需要相應的引數,否則會出錯。
2.帶引數的巨集定義編譯之後只是用#define命令中的形參來替換的。
eg:#define l(x,y) sqrt(x*x+y*y)
z=l(x,y)改為z=l(x+1,y+1),這時替換後z=sqrt(x+1*x+1+y+1*y+1),要想得到正確結果則x,y應加上括號,如下所示:
#define l(x,y) sqrt((x)*(x)+(y)*(y))
3.帶引數的巨集定義名與引數之間不能有空格
eg:#define l (x,y) sqrt(x*x+y*y)
編譯不會出錯,但執行結果會出錯。
C語言 預處理命令
我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...
C語言 預處理命令
一 巨集定義 在 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集定義命令完成的。巨集代換是由預處理程式自動完成的。在 ...
C語言預處理命令
以 開頭的預處理命令。如 include,巨集定義命令 define pi 3.1415926等。在源程式中這些命令都放在函式之外,而且一般放在原始檔前面,它們稱為預處理部分。無參巨集定義 無參巨集的巨集名後不帶引數。其定義的一般形式為 define 識別符號 字串 其中的 表示這是一條預處理命令,...