跳到主要內容

發表文章

目前顯示的是 2月, 2010的文章

終於搞懂了,預編譯頭文件(precompiled header)

預編譯頭文件 今天在改一個很大的程序,慢慢看,慢慢改。突然發現一個.c文件,裡面什麼也沒有, 就幾個頭文件,我一看,我靠,這不是把簡單的問題搞複雜了嗎,隨手刪掉那個c文件。 結果不能編譯了,我靠: fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\': No such file or directory 怎麼rebuild all都不行。 上網查了一下,才搞懂了: ----------------總結------ 如果工程很大,頭文件很多,而有幾個頭文件又是經常要用的,那麼 1。把這些頭文件全部寫到一個頭文件裡面去,比如寫到preh.h 2。寫一個preh.c,裡面只一句話:#include "preh.h" 3。對於preh.c,在project setting裡面設置creat precompiled headers,對於其他 .c文件,設置use precompiled header file // 哈哈 我試了一下,效果很明顯,不用precompiled header,編譯一次我可以去上個廁所,用 precompiled header,編譯的時候,我可以站起來伸個懶腰,活動活動就差不多啦 ---------轉載的文章---------- 預編譯頭的概念: 所謂的預編譯頭就是把一個工程中的那一部分代碼,預先編譯好放在一個文件裡(通常是 以.pch為擴展名的),這個文件就稱為預編譯頭文件這些預先編譯好的代碼可以是任何的 C/C++代碼--------甚至是inline的函數,但是必須是穩定的,在工程開發的過程中不會 被經常改變。如果這些代碼被修改,則需要重新編譯生成預編譯頭文件。注意生成預編 譯頭文件是很耗時間的。同時你得注意預編譯頭文件通常很大,通常有6-7M大。注意及 時清理那些沒有用的預編譯頭文件。 也許你會問:現在的編譯器都有Time stamp的功能,編譯器在編譯整個工程的時候,它 只會編譯那些經過修改的文件,而不會去編譯那些從上次編譯過,到現在沒有被修改過 的文件。那麼為什麼還要預編譯頭文件呢?答案在這裡,我們知道編譯器是以文件為單 位編譯的,一個文件經過修改後,