理解預編譯頭

2021-06-19 02:17:46 字數 954 閱讀 6290

所謂標頭檔案預編譯,就是把乙個工程(project)中使用的一些mfc標準標頭檔案(如windows.h、afxwin.h)預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。

一、預編譯標頭檔案說明

所謂標頭檔案預編譯,就是把乙個工程(project)中使用的一些mfc標準標頭檔案(如windows.h、afxwin.h)預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。

預編譯標頭檔案通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的標頭檔案的字尾是「pch」,所以編譯結果檔案是projectname.pch。

編 譯器通過乙個標頭檔案stdafx.h來使用預編譯標頭檔案。stdafx.h這個頭檔名是可以在project的編譯設定裡指定的。編譯器認為,所有在指 令#include "stdafx.h"前的**都是預編譯的,它跳過#include "stdafx. h"指令,使用projectname.pch編譯這條指令之後的所有**。

因此,所有的cpp實現檔案第一條語句都是:#include "stdafx.h"。

另外,每乙個實現檔案cpp都包含了如下語句:

#ifdef _debug

#undef this_file

static char this_file = __file__;

#endif

這是表示,如果生成除錯版本,要指示當前檔案的名稱。__file__是乙個巨集,在編譯器編譯過程中給它賦值為當前正在編譯的檔名稱。

vc.net 預設情況下使用預編譯頭(/yu),不明白的在加入新.h檔案後編譯時總出現fatal error c1010: 在查詢預編譯頭指令時遇到意外的檔案結尾的錯誤。解決方法是在include標頭檔案的地方加上#include "stdafx.h",或者打專案屬性,找到「c/c++」資料夾,單擊「預編譯頭」屬性頁。修改「建立/使用預編譯頭」屬性為「不使用預編譯頭」。

VC 預編譯頭

預編譯頭的概念 在很多程式中,每個原始檔都存在一些相同的部分。比如要包括相同的一些標頭檔案,而且這些標頭檔案可能很長,例如window.h。如果用普通的方法編譯這些原始檔,對這些標頭檔案在每個原始檔中的出現都要重新編譯,作了很多重複工作。如果能將這些標頭檔案專門進行編譯,並且把結果儲存起來。然後在編...

預編譯頭報錯

預編譯頭的概念 預編譯標頭檔案通常以.pch為副檔名,是將工程中比較穩定的 預先編譯好放在這個檔案中 生成預編譯標頭檔案很耗時間,要盡量避免修改這些穩定的 如果這些 被修改,則需要重新編譯 生成預編譯標頭檔案。作用 預編譯標頭檔案可以用來提高速度,將不經常改變的 預編譯好,以免每次都和其他檔案一起編...

關於預編譯頭

一 什麼是預編譯頭?預編譯頭物理上與通常的的.obj檔案是一樣的,但編譯入預編譯頭的.h,c,cpp檔案在整個編譯過程中,只編譯一次,如預編譯頭所涉及的部分不發生改變的話,在隨後的編譯過程中此部分不重新進行編譯。進而大大提高編譯速度,並便於對頭檔案進行管理,也有助於杜絕重複包含問題。二 什麼時候使用...