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

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


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

            對(duì)象、引用、函數(shù)、類型、模板和命名空間被統(tǒng)稱為識(shí)別名稱。每個(gè)識(shí)別名稱都有三種連接類型:外部連接,內(nèi)部連接和無(wú)連接。這些連接類型都規(guī)定了它在其他范圍以及轉(zhuǎn)譯單元中的可見(jià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類型名,或者常量變量是不能定義成外部的。

            下面舉例說(shuō)明識(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

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

            下面舉例說(shuō)明無(wú)連接方式:

            ? 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í)別名稱在不同范圍和編譯單元中的可見(jiàn)性了。

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

            內(nèi)部連接的定義:如果一個(gè)名稱對(duì)于它的編譯單元來(lái)說(shuō)是局部的,并卻在連接是不可能與其它編譯單元中的同樣的名稱相沖突,那么這個(gè)名稱由內(nèi)部連接。
            內(nèi)部連接意味著對(duì)這個(gè)定義的訪問(wèn)被局限于當(dāng)前編譯單元中。對(duì)其他單元都不可見(jiàn)。
            反之,可以定義外部連接,就是這個(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 游客

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

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

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


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


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

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            四虎亚洲国产成人久久精品| 久久天天躁狠狠躁夜夜avapp| 国内精品久久国产大陆| 99久久99久久久精品齐齐| 色成年激情久久综合| 人人狠狠综合88综合久久| 久久精品日日躁夜夜躁欧美| 国产人久久人人人人爽| 久久人妻少妇嫩草AV蜜桃| 久久午夜夜伦鲁鲁片免费无码影视| 无码超乳爆乳中文字幕久久| 久久精品国产免费| 精品久久久久久久久免费影院| .精品久久久麻豆国产精品| 欧美久久久久久精选9999| 久久中文骚妇内射| 久久毛片免费看一区二区三区| 久久婷婷国产综合精品 | 久久久久黑人强伦姧人妻| 久久综合精品国产二区无码| 久久精品女人天堂AV麻| 精品久久一区二区三区| 奇米影视7777久久精品| 久久久久99这里有精品10| 久久国产免费| 国产高清美女一级a毛片久久w| 嫩草伊人久久精品少妇AV| 久久99热这里只有精品国产| 久久久久亚洲精品无码网址 | 久久亚洲AV成人无码软件| 久久久精品波多野结衣| 久久国产乱子精品免费女| 久久久亚洲欧洲日产国码aⅴ| 久久国产精品无| 久久人人爽人人爽人人片AV东京热| 午夜精品久久久久成人| 亚洲国产综合久久天堂| 亚洲精品无码久久毛片| 久久亚洲中文字幕精品一区| 国产毛片欧美毛片久久久| 亚洲欧美日韩久久精品第一区|