hjh132's Blog
          If a thing is worth doing it is worth doing well.
          posts - 20,comments - 9,trackbacks - 0
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          相冊

          搜索

          •  

          積分與排名

          • 積分 - 11660
          • 排名 - 2241

          最新評論

          閱讀排行榜

          評論排行榜

          1.函數(shù)調(diào)用時(shí),先求出實(shí)參表達(dá)式的值,然后帶入形參。而使用帶參的宏只是進(jìn)行簡單的字符替換。
          2.函數(shù)調(diào)用是在程序運(yùn)行時(shí)處理的,分配臨時(shí)的內(nèi)存單元;而宏展開則是在編譯時(shí)進(jìn)行的,在展開時(shí)并不分配內(nèi)存單元,不進(jìn)行值的傳遞處理,也沒有“返回值”的概念。
          3.對函數(shù)中的實(shí)參和形參都要定義類型,二者的類型要求一致,如不一致,應(yīng)進(jìn)行類型轉(zhuǎn)換;而宏不存在類型問題,宏名無類型,它的參數(shù)也無類型,只是一個符號代表,展開時(shí)帶入指定的字符即可。宏定義時(shí),字符串可以是任何類型的數(shù)據(jù)。
          4.調(diào)用函數(shù)只可得到一個返回值,而用宏可以設(shè)法得到幾個結(jié)果。
          5.使用宏次數(shù)多時(shí),宏展開后源程序長,因?yàn)槊空归_一次都使程序增長,而函數(shù)調(diào)用不使源程序變長。
          6.宏替換不占運(yùn)行時(shí)間,只占編譯時(shí)間;而函數(shù)調(diào)用則占運(yùn)行時(shí)間(分配單元、保留現(xiàn)場、值傳遞、返回)。

          一般來說,用宏來代表簡短的表達(dá)式比較合適。

          有時(shí)使用宏時(shí)會引起理解錯誤:

          例:

          #include<iostream.h>
          #define max(a,b) ((a>b)?a:b)
          void main()
          {
           int i=3,j=2;
           cout<<max(++i,j)<<endl;
           cout<<i<<"  "<<j<<endl;
          }

          運(yùn)行結(jié)果:

          5

          5  2

          posted on 2008-03-24 12:21 101℃太陽 閱讀(572) 評論(0)  編輯  收藏 所屬分類: C與C++

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 山东省| 民乐县| 博野县| 剑河县| 毕节市| 阿拉善盟| 旬阳县| 彭泽县| 长寿区| 大埔区| 怀安县| 武平县| 浦县| 东兰县| 关岭| 贵南县| 喀什市| 南皮县| 六盘水市| 岑巩县| 沈丘县| 永济市| 巴青县| 会昌县| 景东| 鹤峰县| 额尔古纳市| 吉林市| 中宁县| 阿城市| 兴业县| 渭源县| 通山县| 息烽县| 农安县| 海宁市| 万安县| 虞城县| 邓州市| 汤阴县| 罗定市|