• <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>
            隨筆 - 55  文章 - 15  trackbacks - 0
            <2012年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            1)預(yù)處理器:
                將#include"" #define 等預(yù)編譯命令后的語句在文件中展開,為了防止循環(huán)include某個文件,一般采用#pragma once 或者#ifndef #define #endif等方法。預(yù)處理過的代    碼一般放在一個中間文件中。此時你的工程中有N個中間文件。
            2)編譯器: 
                每個中間文件都以一個編譯單元,并且可以單獨編譯,但是每個編譯單元中的變量編譯器一定要知道。要實現(xiàn)這個功能就要靠變量(或者函數(shù))的聲明。聲明是告訴編譯器,我有   這樣一個類型的變量,或者這個類型的函數(shù),等會要用到,你等會檢查的時候,看看我傳入的參數(shù)和返回值是不是符合原型,符合的話你就不要報錯了。如果編譯期間進(jìn)行了語法檢查之  后沒有錯誤的話,編譯器會將這種中間文件生成目標(biāo)模塊.obj格式文件。這種文件中一般是匯編語言。
            3)連接器: 
                把一組目標(biāo)模塊連接成一個可執(zhí)行程序。這個時候就需要變量或者函數(shù)的定義了。如果A目標(biāo)模塊中有個函數(shù)void f(int a){};B模塊中需要調(diào)用f(1)的話,連接器會去搜索    庫,如果A模塊在這個庫中的話,那么A模塊就會被連接進(jìn)這個B模塊,但是整個庫不會被連接進(jìn)來,不然,exe文件就太大了。


            4)聲明與定義
                聲明不分配空間。
                定義分配空間。
                有時聲明一個變量與定義一個變量混在一起。如果想分開,就用extern,明確表明這是一個聲明,該變量的定義在該文件后面或者在另一個文件里面。函數(shù)聲明一般是默認(rèn)e    xtern的。

            5)連接階段的外連和內(nèi)連
                 控制一個變量或者一個函數(shù)的可見性。extern 外連。static 內(nèi)連。 const?忘了。
            6)頭文件
                 一般放變量或者函數(shù)的聲明,可以被包含。C++中有多次包含,一次定義的規(guī)定,所以,變量的定義一般不放在頭文件中,防止多次定義。



            7)連接器如何查找?guī)?/strong>
                當(dāng)C++要對函數(shù)或者變量進(jìn)行外部引用的時候,根據(jù)引用情況,有兩種處理方法。一、如果還沒有遇到過這個變量或者函數(shù)的定義,連接器把它的標(biāo)志符加到“未解析的引用”列表  中;二、如果連接器遇到過定義,那就加到“解析的引用“列表中。
                如果在當(dāng)前目標(biāo)模塊找不到定義,它將會去查找?guī)臁T趲熘姓业蕉x后,就將整個模塊而不僅僅是函數(shù)定義連接到可執(zhí)行程序。(其實我要的只是這么一個函數(shù),一個模塊太多    了)。
                因為連接器按照指定的順序查找文件(先查本模塊,再查庫文件),所以,如果你預(yù)先定義了一個庫中的同名函數(shù)的話,那么就不會調(diào)用庫中的方法了。這就是為什么如果你重載了  new和delete之后,標(biāo)準(zhǔn)的new delete就不再有用的原因了。所以大家要重載這兩個操作符的時候一般不要弄成全局函數(shù),一般要弄成成員函數(shù)哈。

            8)名字空間
                防止名字沖突,加一層保護(hù)。 



            posted on 2012-05-28 15:00 Dino-Tech 閱讀(371) 評論(0)  編輯 收藏 引用

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


            久久精品国产亚洲一区二区三区| 99久久免费国产特黄| 久久久久黑人强伦姧人妻| 老司机午夜网站国内精品久久久久久久久 | 久久人人爽爽爽人久久久| 人妻精品久久无码专区精东影业 | 久久99精品久久久久久| 国产精品免费久久久久影院| 久久免费观看视频| 婷婷综合久久中文字幕蜜桃三电影| 奇米影视7777久久精品| 久久精品国产72国产精福利| 亚洲va久久久噜噜噜久久| 国产巨作麻豆欧美亚洲综合久久| 伊人久久综合精品无码AV专区| 色综合色天天久久婷婷基地| 久久人人添人人爽添人人片牛牛 | 久久久久亚洲AV成人网人人网站| 亚洲第一极品精品无码久久| 91麻精品国产91久久久久| 狠狠色狠狠色综合久久| 久久久久九九精品影院| 久久国产精品成人免费| 久久精品中文字幕无码绿巨人 | 精品一二三区久久aaa片| 国内精品久久久久国产盗摄| 久久久久99精品成人片欧美 | 三级三级久久三级久久| 国产精品青草久久久久福利99 | 成人综合久久精品色婷婷| 国产高潮久久免费观看| 久久精品国产精品亚洲精品| 色婷婷综合久久久久中文一区二区| 日韩美女18网站久久精品| 精品久久久无码中文字幕天天| 久久精品一区二区三区不卡| 久久A级毛片免费观看| 77777亚洲午夜久久多喷| 国产一区二区三区久久精品| 久久99久久99小草精品免视看| 精品无码久久久久国产|