所謂標頭檔案
預編譯,就是把乙個工程(project)中使用的一些mfc標準標頭檔案(如windows.h、afxwin.h)預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。
預編譯標頭檔案通過編譯stdafx.cpp生成,以工程名命名,由於預編譯的標頭檔案的字尾是「pch」,所以編譯結果檔案是projectname.pch。
編譯器通過乙個標頭檔案stdafx.h來使用
預編譯標頭檔案。stdafx.h這個頭檔名是可以在project的編譯設定裡指定的。
編譯器認為,所有在指令#include "stdafx.h"前的**都是
預編譯的,它跳過#include "stdafx. h"指令,使用projectname.pch編譯這條指令之後的所有**。
因此,所有的mfc實現檔案第一條語句都是:#include "stdafx.h"。
stdafx.h中沒有函式庫,只是定義了一些環境引數,使得編譯出來的程式能在32位的
作業系統環境下執行。
windows和mfc的include檔案都非常大,即使有乙個快速的處理程式,
編譯程式也要花費相當長的時間來完成工作。由於每個.cpp檔案都包含相同的include檔案,為每個.cpp檔案都重複處理這些檔案就顯得很傻了。
編譯程式一起進行工作,如下所示:
◎當visualc++編譯stdafx.cpp檔案時,它將結果儲存在乙個名為stdafx.pch的檔案裡。(副檔名pch表示
預編譯標頭檔案。)
◎當visualc++編譯隨後的每個.cpp檔案時,它閱讀並使用它剛生成的.pch檔案。visualc++不再分析windowsinclude檔案,除非你又編輯了stdafx.cpp或stdafx.h。
在這個過程中你必須遵守以下規則:
◎你編寫的任何.cpp檔案都必須首先包含stdafx.h。
預編譯stdafx.cpp。
◎由於.pch檔案具有大量的符號資訊,它是你的工程檔案裡最大的檔案。
如果你的磁碟空間有限,你就希望能將這個你從沒使用過的工程檔案中的.pch檔案刪除。執行程式時並不需要它們,且隨著工程檔案的重新建立,它們也自動地重新建立。
通俗一點說
原始檔cpp都包含相同的include檔案,這樣,為每個.cpp檔案都重複include這些檔案就顯得很傻了。當然如果你不用mfc的話就不用了。即:在每個.cpp檔案中都include stdafx.h 就相當於包含了其他的如
iostream.h等檔案
我們一般用tc或vc編譯c程式的時候都要首先包含這個
stdio.h標頭檔案,這個標頭檔案裡面包含了scanf和printf函式的定義,如果我們不在程式開頭include這個檔案,那麼你呼叫上面這兩個函式就不會成功,它其實和c++中的
iostream.h檔案的作用差不多的,它們一般都已經在stdafx.h檔案中被包含。
stdafx h標頭檔案解析
windows和mfc的include檔案都非常大,即使有乙個快速的處理程式,編譯程式也要花費相當長的時間來完成工作。為避免這種浪費,在stdafx.h中新增的是mfc用到的標頭檔案和環境引數 比如 include mfc core and standard components include m...
stdafx h標頭檔案的作用
沒有函式庫,只是定義了一些環境引數,使得編譯出來的程式能在32位的作業系統環境下執行。windows和mfc的include檔案都非常大,即使有乙個快速的處理程式,編譯程式也要花費相當長的時間來完成工作。由於每個.cpp檔案都包含相同的include檔案,為每個.cpp檔案都重複處理這些檔案就顯得很...
stdafx h標頭檔案的作用
stdafx.h標頭檔案的作用 stdafx.h檔案中包含了一些必要的標頭檔案 如afxwin.h 對應於stdafx.h有乙個stdafx.cpp檔案,該檔案內包含一句 include stdafx.h 其作用是令編譯器編譯出乙個stdafx.obj預編譯標頭檔案 pre compile head...