【轉】Cannot open precompiled header file:'Debug/password.pch' No such file or directory

Cannot open precompiled headerfile:'Debug/test.pch' No such f...

今天在VC6.0中咕噥個程序,遇到如下提示:

Cannot openprecompiled header file:'Debug/password.pch' No such file or directory

所謂pch,即precompiledheader

你可以打開StdAfx.h,然後F7.看看正常沒~

或者:

選擇全部組建,試試看:



不行的話往下看。(貌視寫的有點亂)



在菜單的工程”--“設置裏選定工程,如圖選擇Tab頁,在紅圈中把u改成c,確定,回到工程中再Ctrl+F7Compile)一下,就能生產pch文件了,然後再改回上文設置。

參考資料

預編譯頭文件(一般擴展名爲.PCH),是把一個工程中較穩定的代碼預先編譯好放在一個文件(.PCH)裏。這些預先編譯好的代碼可以是任何的C/C++代碼--甚至可以是inline函數,只它們在整個工程中是較爲穩定的,即在工程開發過程中不會經常被修改的代碼.

爲什麼需要預編譯頭文件?一言以蔽之:提高編譯速度。一般地,編譯器以文件爲單位編譯,如果修改了一工程中的一個文件則所有文件都要重新編譯,包括頭文件裏的所有東西(eg.Macro宏、Preprocessor預處理),而VC程序中,這些頭文件中所包括的東西往往是非常大的,編譯之將佔很長的時間。但它們又不常被修改,是較穩定的,爲單獨的一個小文件而重新編譯整個工程的所有文件導致編譯效率下降,因此引入了.PCH文件。

如何使用預編譯頭文件以提高編譯速度?要使用預編譯頭文件,必須指定一個頭文件(.H),它包含我們不會經常修改的代碼和其他的頭文件,然後用這個頭文件 (.H)來生成一個預編譯頭文件(.PCH)VC默認的頭文件就是StdAfx.h,因爲頭文件是不能編譯的,所以我們還需要一個.CPP文件來作橋樑,VC默認的文件爲StdAfx.cpp,這個文件裏只有一句代碼就是:#include "StdAfx.h"。接下來要用它生成.PCH文件,涉及到幾個重要的預編譯指令:/Yu/Yc/Yx/Fp。簡單地說:

/Yc:是用來生成. PCH文件的編譯開關。在 Project -> setting -> C/C++Category裏的Precompiled Header,然後在左邊的樹形視圖中選擇用來編譯生成.PCH文件的.CPP文件(默認即StdAfx.cpp)你就可以看到/Yc這個開關,它表示這個文件編譯了以後是否生成.PCH文件(可能/Ycc表示create)

/Fp:指令指定生成的.PCH文件的名字及路徑(可能/Fpp代表 path)

/Yuuuse使用,工程中只要包括了.H文件的文件都會有這個/Yu指令。如果選擇自動Automatic...的話則原來爲/Yc的地方就換成了/Yx指令。如果選擇自動,則每次編譯時編譯器會看以前有沒有生成過.PCH文件,有則不現生成否則就再次編譯產生.PCH文件。

注意:

A:實際上,由Appzard項目嚮導生成的默認的頭文件及CPP文件StdAfx.hStdAfx.cpp可以是任何名字的。原因很簡單,但如果你要這樣做就要記得修改相應的 Project -> setting...下的幾個預編譯指令(/Yc/YuYx/Fp)的參數。

B:在任何一個包括了將要預編譯的頭文件而使用了.PCH文件的工程文件的開頭,一定必須要是在最開頭,你要包含那個指定生成.PCH文件的.H文件(.CPP文件包括,默認爲StdAfx.cpp),如果沒包括將產生我最開頭產生的錯誤。如果不是在最開頭包括將產生讓你意想不到的莫名其妙錯誤,如若不信,盍爲試之?

C:預編譯文件.PCH生成之很耗時間,而且生成之後它也很佔磁盤空間,常在5-6M,注意項目完成之後及時清理無用的.PCH文件以節約磁盤空間。

D:如果丟了或刪了.PCH文件而以後要再修改工程文件時,可將指定的/Yc.CPP文件(默認爲StdAfx.cpp)重新編譯一次即可再次生成.PCH文件,不用傻傻的按F7Rebuild All

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章