(<參數(shù)表>)<宏體>  其中,<宏名>是一個標識符,<參數(shù)表>中的參數(shù)可以是一個,也可以是多個,視具體情況而定,當有多個參數(shù)的時候,每個參數(shù)之間用逗號分隔">
帶參數(shù)的宏定義#define

帶參數(shù)的宏定義#define

ID:9016865

大?。?3.50 KB

頁數(shù):2頁

時間:2018-04-15

帶參數(shù)的宏定義#define_第1頁
帶參數(shù)的宏定義#define_第2頁
資源描述:

《帶參數(shù)的宏定義#define》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫

1、9.1.2帶參數(shù)的宏定義  帶參數(shù)的宏定義的一般形式如下:  #define<宏名>(<參數(shù)表>)<宏體>  其中,<宏名>是一個標識符,<參數(shù)表>中的參數(shù)可以是一個,也可以是多個,視具體情況而定,當有多個參數(shù)的時候,每個參數(shù)之間用逗號分隔。<宏體>是被替換用的字符串,宏體中的字符串是由參數(shù)表中的各個參數(shù)組成的表達式。例如:  #defineSUB(a,b)a-b如果在程序中出現(xiàn)如下語句:  result=SUB(2,3)則被替換為:  result=2-3;如果程序中出現(xiàn)如下語句:  result=SUB(x+1,y+2);則被替換為:  res

2、ult=x+1-y+2;  在這樣的宏替換過程中,其實只是將參數(shù)表中的參數(shù)代入到宏體的表達式中去,上述例子中,即是將表達式中的a和b分別用2和3代入?! ∥覀兛梢园l(fā)現(xiàn):帶參的宏定義與函數(shù)類似。如果我們把宏定義時出現(xiàn)的參數(shù)視為形參,而在程序中引用宏定義時出現(xiàn)的參數(shù)視為實參。那么上例中的a和b就是形參,而2和3以及x+1和y+2都為實參。在宏替換時,就是用實參來替換<宏體>中的形參。下面是帶參數(shù)的宏定義的例子:例9-4?#include#defineSUB(a,b)a-bvoidmain(){ intx,y,result; x=

3、2; y=3; result=SUB(x+2,y-1); cout<<"result="<

4、參替換形參。而在函數(shù)中,形參和實參是完全獨立的變量,它們均有自己的作用域。當調用發(fā)生時,實參傳遞給形參的過程(值傳遞或引用傳遞)完全不同于簡單的宏替換?! 。?)在宏定義中的形參是標識符,而宏調用中的實參可以是表達式。如:例9-5?#include#defineSQ(y)(y)*(y)voidmain(){ intx,result; cout<<"inputanumber:"<>x; sq=SQ(x+1); cout<<"result="<

5、)(y)*(y)"一行為宏定義,形參為y。程序中宏調用時實參為x+1,是一個表達式,在宏展開時,用x+1代換y,再用(y)*(y)代換SQ,得到如下語句:"result=(a+1)*(a+1);",這與函數(shù)的調用是不同的,函數(shù)調用時要把實參表達式的值求出來再賦予形參。而宏代換中,對實參表達式不作計算直接地照原樣替換。

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。