|
預(yù)編譯頭文件 收藏
http://www./blog/?p=34 一直用預(yù)編譯頭文件,但沒有作深入的了解,發(fā)現(xiàn)同事那發(fā)生編譯時出現(xiàn)找不到$(IntDir)\$(TargetName).pch文件時,讓他把工程的 預(yù)編譯頭選項中的 "使用預(yù)編譯頭(/Yu)" 修改為 "創(chuàng)建預(yù)編譯頭(/Yc)",又發(fā)現(xiàn)Debug編譯成功,Release編譯失敗的問題,請教博強后問題解決。發(fā)現(xiàn)自己一直對預(yù)編譯頭文件不了解,摘抄一些東西補課。 何時需要預(yù)編譯源代碼
預(yù)編譯代碼有助于在開發(fā)周期中縮短編譯時間,特別是在以下情況中: 總是使用不經(jīng)常改動的大型代碼體。 程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預(yù)編譯為一個預(yù)編譯頭。 用于創(chuàng)建預(yù)編譯頭文件的第一次編譯所花費的時間比后面的編譯稍長一些。通過包含預(yù)編譯代碼可以加快后面的編譯速度。 C 和 C++ 程序都可以預(yù)編譯。在 C++ 編程中,常見的做法是將類接口信息分別放到不同的頭文件中。此后就可以將這些頭文件包含在使用該類的程序中。通過預(yù)編譯這些頭文件,可以縮短程序的編譯時間。 兩種預(yù)編譯代碼方法 使用 Visual C++ 可以預(yù)編譯任何 C 或 C++ 代碼;并不僅限于預(yù)編譯頭文件。 預(yù)編譯要求先進行規(guī)劃,但如果預(yù)編譯的是除簡單的頭文件之外的源代碼,則將大幅度提高編譯速度。 如果知道源文件使用一組通用的頭文件但包含順序不同,或者希望將源代碼包含在預(yù)編譯中,則需預(yù)編譯代碼。 如果使用預(yù)編頭文件,一定要有一個文件設(shè)置為"創(chuàng)建預(yù)編譯頭(/Yc)",通常這個文件是stdafx.cpp,其他cpp文件設(shè)置為"使用預(yù)編譯頭(/Yu)" ,如果工程中沒有文件一個文件設(shè)為"創(chuàng)建預(yù)編譯頭(/Yc)"而工程設(shè)置為"使用預(yù)編譯頭(/Yu)" 則會出現(xiàn)找不到$(IntDir)\$(TargetName).pch文件的問題,如果把每個源文件都設(shè)為"創(chuàng)建預(yù)編譯頭(/Yc)"),則會出現(xiàn)Debug編譯成功,Release編譯失敗,提示"找到一個或多個多重定義的符號" 的問題。 預(yù)編譯頭一定要放在源文件的開頭,否則就會出現(xiàn)編譯錯誤,個人認為原因是擔心其他的頭文件或者宏定義會造成預(yù)編頭內(nèi)容的不同。 博強給的一些建議:預(yù)編譯頭中包含的頭文件是不經(jīng)常改動的頭文件,所以一般是標準頭文件,也就是用#include <…>括起來的內(nèi)容。在預(yù)編譯頭中一般不要寫上using namespace …;這樣對于不同命名空間中重名類的使用會帶來問題。 本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/beingstudio/archive/2010/04/10/5471424.aspx
|
|
|