• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            liyuxia713

            蹣跚前行者

            常用鏈接

            統計

            Algorithms

            C++

            最新評論

            宏與內聯(inline)的區別(轉載)

            先轉載下人家總結的宏和普通函數調用的區別:
            (1)、宏只做簡單的字符串替換,函數是參數傳遞,所以必然有參數類型檢查(支持各種類型,而不是只有字符串)。
            (2)、宏不經計算而直接替換參數,函數調用則是將參數表達式求值再傳遞給形參。
            (3)、宏在編譯前進行,即先替換再編譯。而函數是編譯后,在執行時才調用的。宏占編譯時間,而函數占執行時間。
            (4)、宏參數不占空間,因為只做字符串替換,而函數調用時參數傳遞是變量之間的傳遞,形參作為局部變量占內存空間。
            (5)、函數調用需要保留現場,然后轉入調用函數執行,執行完畢再返回主調函數,這些耗費在宏中是沒有的。


            使用宏和內聯函數都可以節省在函數調用方面的時間和空間開銷。二者都是為了提高效率,但是卻有著顯著的區別:
            (1)、在使用時,宏只做簡單的預處理器符號表(字符串)中的簡單替換。而內聯函數可以進行參數類型檢查,且具有返回值(也能被強制轉換為可轉換的合適類型)。
            (2)、內聯函數首先是函數,函數的許多性質都適用于內聯函數(如內聯函數可以重載)。
            (3)、內聯函數可以作為某個類的成員函數,這樣可以使用類的保護成員和私有成員。而當一個表達式涉及到類保護成員或私有成員時,宏就不能實現了(無法將this指針放在合適位置)。


            可以用內聯函數完全替代宏。
            但是在使用內聯函數時也要注意:作為內聯函數,函數體必須十分簡單,不能包含循環,條件,選擇等復雜結構,否則不能作為內聯函數。
            實際上,編譯器的優化系統會自動將一些簡單函數變成內聯函數。而一些復雜的函數,即使指定為內聯,編譯器也會自動當作普通函數。

             

            文章出處:DIY部落(http://www.diybl.com/course/3_program/c++/cppxl/20081216/154041.html)

            posted on 2010-03-04 20:22 幸運草 閱讀(1847) 評論(0)  編輯 收藏 引用 所屬分類: C++

            欧美一级久久久久久久大| 亚洲狠狠综合久久| 久久久久女教师免费一区| 精品国产乱码久久久久久郑州公司 | 久久久精品人妻一区二区三区四| 久久久久亚洲av毛片大| 久久九九免费高清视频| 久久93精品国产91久久综合| 99久久国产综合精品成人影院 | 国产午夜精品久久久久九九| 久久中文字幕视频、最近更新| 久久www免费人成精品香蕉| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国内精品久久久久久久97牛牛| 久久午夜无码鲁丝片秋霞| 亚洲精品午夜国产VA久久成人| 久久精品无码一区二区三区日韩 | 亚洲国产成人久久综合野外| 久久婷婷五月综合97色直播 | 成人国内精品久久久久影院VR| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品国产VA久久久久久久冰| 久久国产精品久久久| 亚洲国产成人精品无码久久久久久综合| 久久精品中文字幕一区| 天堂无码久久综合东京热| 女人香蕉久久**毛片精品| 亚洲AV成人无码久久精品老人 | 久久久久国产精品嫩草影院 | 久久亚洲美女精品国产精品| 亚洲а∨天堂久久精品| 亚洲国产二区三区久久| 久久se精品一区精品二区| 久久精品无码专区免费东京热| 久久久亚洲欧洲日产国码是AV| 久久综合色区| 亚洲国产精品一区二区三区久久| 狠狠精品干练久久久无码中文字幕| 精品一区二区久久| 久久精品www| 久久精品国产欧美日韩|