• <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年10月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿

            隨筆分類(lèi)

            隨筆檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

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


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

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



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

            8)名字空間
                防止名字沖突,加一層保護(hù)?!?br />


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

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


            国产亚洲美女精品久久久| 免费无码国产欧美久久18| 久久久久久曰本AV免费免费| 国产综合精品久久亚洲| 狠狠色婷婷综合天天久久丁香| 伊人久久精品无码二区麻豆| 一本色道久久88精品综合| 久久久高清免费视频| 热99RE久久精品这里都是精品免费 | 久久精品国产亚洲AV影院| 亚洲AV伊人久久青青草原| 亚洲日本久久久午夜精品| 狠狠色丁香久久婷婷综合图片| 久久这里只有精品首页| 久久中文字幕人妻熟av女| 亚洲精品乱码久久久久久中文字幕| 日本人妻丰满熟妇久久久久久| 精品熟女少妇av免费久久| 青青青青久久精品国产| 国产成人精品久久| 亚洲婷婷国产精品电影人久久 | 99久久精品国产高清一区二区| 久久99国产综合精品免费| 久久国产精品成人免费| 国产精品午夜久久| 久久最新免费视频| 久久亚洲精品中文字幕| 久久99精品久久久久久秒播| 色综合久久天天综线观看| 久久婷婷五月综合97色一本一本 | 欧美性大战久久久久久| 国内精品伊人久久久久777| 久久人人妻人人爽人人爽| 色综合久久88色综合天天| 久久综合九色综合欧美就去吻| 久久精品国产久精国产果冻传媒| 丁香狠狠色婷婷久久综合| 国产精品久久久久久久人人看| 欧美久久综合性欧美| 狠狠色婷婷久久综合频道日韩| 精品久久久久国产免费|