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

            關(guān)于《大規(guī)模C++程序設(shè)計(jì)》的一些感想(連載)

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

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


            首先對(duì)這本書上的最開始的設(shè)計(jì)原則的幾個(gè)連接解釋,引用一段文章

            對(duì)象、引用、函數(shù)、類型、模板和命名空間被統(tǒng)稱為識(shí)別名稱。每個(gè)識(shí)別名稱都有三種連接類型:外部連接,內(nèi)部連接和無連接。這些連接類型都規(guī)定了它在其他范圍以及轉(zhuǎn)譯單元中的可見性。

            識(shí)別名稱的外部連接和程序的每個(gè)編譯單元都有聯(lián)系。比如:函數(shù)通常不被定義為靜態(tài)的全局對(duì)象,常量對(duì)象可以定義為枚舉類型等等。

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

            ?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

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

            下面舉例說明識(shí)別名稱的內(nèi)部連接方式:

            ? 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

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

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

            ? 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
            }

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

            書中說到內(nèi)部連接和外部連接
            當(dāng)一個(gè).cpp文件編譯時(shí),C預(yù)處理器(cpp)首先(遞歸地)包含頭文件,形成一個(gè)含有所有必要信息的單個(gè)源文件。然手這個(gè)中間文件(成為“編譯單元”)被編譯生成一個(gè)與主文件名相同的.obj文件(目標(biāo)文件)。連接把在不同編譯單元中產(chǎn)生的符號(hào)聯(lián)系起來,構(gòu)成一個(gè)可執(zhí)行程序。這就包含兩種不同的連接:外部連接和內(nèi)部連接。

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

            be?continued……

            ?

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

            評(píng)論

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

            抄書有意思嗎?  回復(fù)  更多評(píng)論   

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

            @游客
            做摘記還是很好的  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2008年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲国产日韩欧美综合久久| 久久国产免费观看精品3| 国产精品成人精品久久久 | 国产精品无码久久综合网| 亚洲国产成人久久综合一 | 香蕉久久av一区二区三区| 久久婷婷五月综合97色| 亚洲天堂久久精品| 久久精品卫校国产小美女| 996久久国产精品线观看| 久久影视综合亚洲| 99久久国产综合精品麻豆| 亚洲一区精品伊人久久伊人| 69久久精品无码一区二区| 久久精品极品盛宴观看| 久久国产精品99久久久久久老狼| 久久最新免费视频| segui久久国产精品| 久久人人爽人人爽人人片AV不| 国产精品熟女福利久久AV| 久久久久亚洲精品无码蜜桃| 伊人精品久久久久7777| 婷婷综合久久中文字幕| 久久久久成人精品无码中文字幕| 香蕉久久永久视频| 久久亚洲AV永久无码精品| 久久精品一区二区国产| 久久久久久久久久久久中文字幕| 日本亚洲色大成网站WWW久久 | 久久夜色精品国产亚洲| 国产成人精品久久免费动漫| 国产精品gz久久久| 精品久久人妻av中文字幕| 国产毛片欧美毛片久久久 | 久久综合鬼色88久久精品综合自在自线噜噜 | 青青草国产成人久久91网| 99久久免费国产特黄| 69久久精品无码一区二区| 99久久99久久精品免费看蜜桃| 色综合久久无码五十路人妻| 久久精品aⅴ无码中文字字幕重口|