乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      預(yù)編譯頭文件的問(wèn)題 - Thinking dynamic - 博客園

       verychen 2010-12-08

      預(yù)編譯頭文件的問(wèn)題

      整了一晚上,終于明白了預(yù)編譯頭文件.

      DXUT(The DirectX Utility Library)是初學(xué)DirectX的一個(gè)好用的框架, 今天照著Sample里的EmptyProject建了一個(gè)工程, 引用了DXUT的代碼, 并將設(shè)置-->C/C++-->Precompiled設(shè)置為Use Precompiled Header(/UC), DXUT.h, 發(fā)現(xiàn)怎么也編譯不過(guò)去. 搞了半天才發(fā)現(xiàn)DXUT.cpp文件沒(méi)有設(shè)置成Create Precompiled Header(/YC).:(

      下面隨便介紹一下預(yù)編譯頭文件的原理:

      在DXUT.cpp里include一次DXUT.h,生成一次pch,pdb文件,其他地方實(shí)際上直接用這個(gè)編譯的結(jié)果,從而減少編譯時(shí)間,提高編譯效率。一般,我們把常用的不變的庫(kù)頭文件放里面,如,atlbase.h,atlcore.h,windows.h等,通常的com里import進(jìn)來(lái)的dll,tlb也放這個(gè)里面,這樣,它能做到,只編譯一次,其他地方直接用編譯出的結(jié)果。

      如果預(yù)編譯頭文件被正確使用時(shí),它確實(shí)大大提高我們編程的效率(你工作中,有多少時(shí)間是在等編譯完成?很多吧,這個(gè)時(shí)候一般都很無(wú)聊,無(wú)奈,浪費(fèi)時(shí)間)。但是他太容易用錯(cuò)了. 下面是幾種常見(jiàn)的錯(cuò)誤用法.

      1) 在預(yù)編譯頭文件里include自己的頭文件(當(dāng)然, 如果你的頭文件不經(jīng)常變化, 也可以)

      原因:自己的頭文件一般會(huì)經(jīng)常變, 便利后導(dǎo)致預(yù)編譯的東東重新編譯, 降低了編譯速度.

      2) 在其他的頭文件里也include 預(yù)編譯頭文件

      假設(shè)你的其他頭文件也include了預(yù)編譯頭文件, 如果別人引用你的這個(gè)頭文件又沒(méi)有設(shè)置成預(yù)編譯頭文件, 那引用你頭文件的這個(gè)人就煎熬了.

      原因:由于你用到的.h文件里include了預(yù)編譯頭文件,他在他本身的project里,vs能夠判斷的出他是預(yù)編譯頭,也能找的到需要的pch,pdb文件。所以對(duì)寫(xiě)這個(gè).h文件的人沒(méi)影響。但是你作為他的客戶(hù),你工作在你的project下,你include了他的h頭文件,而這時(shí)vs判斷不出他的頭文件里include的stdafx是預(yù)編譯頭文件,做普通文件編。那可想而知,他的stdafx里如果有import外面大型的庫(kù)(如inventor的tlb,非常慢,我們犯了這個(gè)錯(cuò)),那編譯速度簡(jiǎn)直是煎熬。最要命的是,以后你做任何簡(jiǎn)單的修改都要重編,這和預(yù)編譯解決的問(wèn)題恰好相反了。

      下面給出一個(gè)使用預(yù)編譯頭文件的操作步驟, 享受一下預(yù)編譯頭文件給我們帶來(lái)的編譯速度的提升:

      1) 添加一個(gè)stdafx.h文件(名字隨便取, 這里用了VS默認(rèn)提供的名稱(chēng)), 在這個(gè).h文件里include要使用的頭文件(一般是外部的庫(kù), 自己寫(xiě)的不常變的頭文件也可以加進(jìn)來(lái))

      2) 添加一個(gè)stdafx.cpp文件, 并include "stdafx.h"

      3)項(xiàng)目屬性-->c/c++-->Precompiled設(shè)置為Use Precompiled Header, stdafx.h

      4)stdafx.cpp屬性-->c/c++->Precompiled設(shè)置為Create Precompiled Header, stdafx.h

      done!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多