• <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小说| 亚洲熟妇无码另类久久久| 久久精品国产影库免费看| 久久国产午夜精品一区二区三区| 一本久久免费视频| 97久久精品人人做人人爽| 18禁黄久久久AAA片| 狠狠精品干练久久久无码中文字幕| 一本久久综合亚洲鲁鲁五月天| 久久久久人妻精品一区二区三区| 国产精品va久久久久久久| 伊人色综合久久天天人手人婷| 国产成人精品综合久久久| 亚洲va国产va天堂va久久| 亚洲国产成人久久一区久久| 国产精品毛片久久久久久久| 一本久久a久久精品亚洲| 精品无码久久久久久久动漫| 99久久免费国产精精品| 亚洲精品蜜桃久久久久久| 亚洲国产成人乱码精品女人久久久不卡| A狠狠久久蜜臀婷色中文网| 久久精品国产男包| 99久久免费国产精品特黄| 久久伊人影视| 久久久久久无码国产精品中文字幕| 亚洲国产成人久久综合碰碰动漫3d| 亚洲精品乱码久久久久久中文字幕| 久久久久99这里有精品10| 波多野结衣久久一区二区| 狠狠色丁香久久婷婷综合图片 | 久久一区二区三区免费| 99久久婷婷国产综合精品草原| 久久不射电影网| 国产精品成人99久久久久| 久久精品中文字幕有码| 久久久久久国产精品无码下载 | 久久99精品久久久久久齐齐|