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

            關于《大規模C++程序設計》的一些感想(連載)

            ?我對動手寫一些大的程序很有抵觸心理,可能是初學的原因,但是已經是大二了,應該不算初學。
            我們學校不是名校,而且地理環境比較偏僻。信息量自然就閉塞,我只能通過協議感想與外界交流。希望大家多多幫助。

            我沒有好好思考過一個大型的程序應該具備什么樣的素質。只是下手寫的時候覺得無所適從。我覺得不光是自己的編程能力有限,和自己的不勤于與人交流有關系。我總是閉門造車。不停遇到困難,有時候會去調試,有時候干脆就放在那,問題就一直沒有解決。


            首先對這本書上的最開始的設計原則的幾個連接解釋,引用一段文章

            對象、引用、函數、類型、模板和命名空間被統稱為識別名稱。每個識別名稱都有三種連接類型:外部連接,內部連接和無連接。這些連接類型都規定了它在其他范圍以及轉譯單元中的可見性。

            識別名稱的外部連接和程序的每個編譯單元都有聯系。比如:函數通常不被定義為靜態的全局對象,常量對象可以定義為枚舉類型等等。

            下面列舉了一些識別名稱的外部連接方式:

            ?int n; //global non-static, hence external linkage
            class C
            {
            ?void f(); // member functions
            ?static int n;// static data members
            };
            extern const K; //defined in a different translation unit
            void func ();
            namespace NS
            {
            ?class D{}; // qualified name NS::D has external linkage
            }
            enum DIR
            {
            ?Up,
            ?Down
            } // DIR, Up and Down have external linkage

            識別名稱的內部連接僅存在于編譯單元的定義中。在一個命名空間中定義一個靜態對象,那么這個命名空間的連接類型就是內部連接。匿名連接的成員、匿名命名空間的成員、typedef類型名,或者常量變量是不能定義成外部的。

            下面舉例說明識別名稱的內部連接方式:

            ? static void f(); //a static function
            static int q; //a static object declared in global scope
            namespace //members of anonymous namespace
            {
            ?class C{};
            ?int x;
            ?}
            const M=1000; //const object not declared extern
            union{ //members of an anonymous union
            ?int x;
            ?float y;
            };
            typedefint I; // typedef names

            無連接方式僅存在于識別名稱被定義的范圍。這些識別名稱包括局部對象、局部類和局部類型。此外,不管識別名稱是內部連接還是外部連接,它們都是無連接。

            下面舉例說明無連接方式:

            ? int main()
            {
            ?class C{}; // C is a local class; has no linkage
            ?int j; // local object not declared extern has no linkage
            ?C c;? // the object c has no linkage
            ?{
            ?//types declared in this scope aren't visible elsewhere
            ? enum Parity? // local enum and enumerators
            ? {
            ?? Even,
            ?? Odd
            ? };
            ? typedefint I; // local typedef
            ? I i; //OK
            ? Parity x=Odd; //OK
            ?}
            ?Parity x; //error, Parity isn't recognized in this scope
            ?I n; //ditto
            }

            現在,我們可以利用不同的連接方式確定識別名稱在不同范圍和編譯單元中的可見性了。

            書中說到內部連接和外部連接
            當一個.cpp文件編譯時,C預處理器(cpp)首先(遞歸地)包含頭文件,形成一個含有所有必要信息的單個源文件。然手這個中間文件(成為“編譯單元”)被編譯生成一個與主文件名相同的.obj文件(目標文件)。連接把在不同編譯單元中產生的符號聯系起來,構成一個可執行程序。這就包含兩種不同的連接:外部連接和內部連接。

            內部連接的定義:如果一個名稱對于它的編譯單元來說是局部的,并卻在連接是不可能與其它編譯單元中的同樣的名稱相沖突,那么這個名稱由內部連接。
            內部連接意味著對這個定義的訪問被局限于當前編譯單元中。對其他單元都不可見。
            反之,可以定義外部連接,就是這個名稱在連接時可以和其他編譯單元交互。
            現在明白為什么有連接錯誤的時候會提示 使用了非法的外部連接。

            be?continued……

            ?

            posted on 2007-03-31 19:02 lele 閱讀(2540) 評論(2)  編輯 收藏 引用

            評論

            # re: 關于《大規模C++程序設計》的一些感想(連載) 2008-06-16 22:51 游客

            抄書有意思嗎?  回復  更多評論   

            # re: 關于《大規模C++程序設計》的一些感想(連載)[未登錄] 2008-06-20 19:38 foxtail

            @游客
            做摘記還是很好的  回復  更多評論   

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品久久久久久久人人看| 99久久综合狠狠综合久久止| 久久这里只有精品视频99| 精品久久久久久无码人妻蜜桃| 久久久久女教师免费一区| 久久天天躁狠狠躁夜夜不卡 | 国产成人精品久久二区二区 | 久久久久国产视频电影| 久久久www免费人成精品| 国产精品一区二区久久| 久久青青草原精品国产软件| 婷婷五月深深久久精品| 久久国产精品一区| av无码久久久久不卡免费网站| 久久久久亚洲AV成人网| 色综合久久久久久久久五月| 久久久久综合国产欧美一区二区| 东方aⅴ免费观看久久av| 国产 亚洲 欧美 另类 久久| 亚洲级αV无码毛片久久精品| 青青草原综合久久大伊人精品| 伊人热热久久原色播放www| 情人伊人久久综合亚洲| 亚洲国产精品无码久久一区二区 | 国产精品美女久久久m| 三级韩国一区久久二区综合| 91久久香蕉国产熟女线看| 久久久久亚洲AV成人片| 亚洲欧美日韩中文久久| 精品久久久久久无码不卡| 日本精品一区二区久久久| 久久99免费视频| 国产成人精品久久免费动漫| 亚洲精品乱码久久久久久中文字幕 | 久久香综合精品久久伊人| 久久综合狠狠综合久久97色| 国产高清美女一级a毛片久久w| 国产精品久久波多野结衣| 国产精品毛片久久久久久久 | 久久综合狠狠色综合伊人| 国产99久久精品一区二区|