• <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>

            通關旅

            softgamer的痕跡
            posts - 16, comments - 13, trackbacks - 0, articles - 0

            C++體會 -- 內聯函數

            Posted on 2007-02-05 21:04 softgamer 閱讀(392) 評論(3)  編輯 收藏 引用 所屬分類: 學習日志
            ??? 內聯函數

            ? ?C++ 提供了內聯函數(inline functions ),主要用于減少函數所使用的開銷,尤其對于小型函數

            ?? 函數返回類型之前的限定符inline 讓編譯器在適當的程序部分生成函數的副本,以避免函數調用,這樣使程序中插入多個函數
            代碼的副本,令程序增大。而不是一個函數的副本(每次調用函數時,控制都會傳到函數中)。

            ?? 對內聯函數的更改都需要重新編譯該函數的所有調用者,這會大大影響程序的維護,所以inline用于小型的,使用頻繁的函數最好.
            而且
            內聯函數也使程序的執行時間減少,但在編譯時增大了程序的長度,當然也不絕對,有時也會減小程序長度,特別是內聯函數是非常小的函數時。


            ?? 題外話, 使用const的目的在函數中只是保護原始實參的副本,而不是原始實參本身。


            ?



            Feedback

            # re: C++體會 -- 內聯函數  回復  更多評論   

            2007-02-06 10:19 by gql
            "內聯會增大程序的代碼",這是想當然,實際并非如此,如:
            class C
            {
            int n_;
            public :
            inline int get_n() { return n_; }
            };

            C c;
            int value = c.get_n(); // 1
            如果編程器在1處調用c.get()而不是內聯它,那比內聯的代碼長度更大。想下就知道,為了調用c.get()編譯器首先要把返回地址壓棧,在函數內還要設置堆棧指針,拷貝c.n_到eax, 然后出棧,拷貝eax的值到value中,可以算下這有多少條代碼。若直接內聯不過兩條而已。

            # re: C++體會 -- 內聯函數[未登錄]  回復  更多評論   

            2007-02-06 11:57 by softgamer
            @gql
            當然,內聯函數也可能減小執行代碼的尺寸。特別是,當調用函數的代碼總量大于展開的內聯函數的代碼總量。
            這樣的情況會發生于非常小的函數。
            inline int get_n() { return n_; }
            是非常小的函數了,也是我們常用的,請你再加兩三行看看,然后調用兩次。
            事無絕對,但內聯函數在編譯器編譯時大部分會增加長度,也是事實。
            就像數學的拐點,在此點以下,數值很小,此點以上數值增大。
            也是我沒寫清楚。

            # re: C++體會 -- 內聯函數  回復  更多評論   

            2007-02-06 16:59 by gql
            個人淺見,見笑了。
            99久久99久久精品国产片果冻 | 国产一级持黄大片99久久| 亚洲欧洲精品成人久久曰影片| 亚洲日韩欧美一区久久久久我| 中文精品99久久国产| 色88久久久久高潮综合影院 | 伊人久久久AV老熟妇色| 久久精品国产99久久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久久久99精品成人片牛牛影视| 亚洲七七久久精品中文国产| 亚洲精品美女久久久久99| 香蕉99久久国产综合精品宅男自 | 久久久久国产精品熟女影院| 狠狠精品干练久久久无码中文字幕| 人妻无码αv中文字幕久久琪琪布| 99久久精品免费观看国产| 2021少妇久久久久久久久久| 久久午夜无码鲁丝片秋霞| 久久久久国产精品嫩草影院| 色诱久久久久综合网ywww| 久久无码国产| 伊人色综合久久天天网| 久久久国产精品福利免费| 99久久免费国产特黄| 免费精品久久天干天干| 久久精品国产亚洲AV不卡| 亚洲国产精品婷婷久久| 国产精品久久久久久吹潮| 国产精品18久久久久久vr| 亚洲国产精品一区二区久久hs| 伊人久久精品影院| 中文字幕无码久久精品青草 | 老男人久久青草av高清| 三级片免费观看久久| 开心久久婷婷综合中文字幕| 久久久久亚洲精品天堂久久久久久| 国产成人综合久久久久久| 久久婷婷色综合一区二区| 久久er国产精品免费观看8| 精品乱码久久久久久夜夜嗨 |