stdafx.h、stdafx.cpp兩個文件的做用

stdafx.h、stdafx.cpp是幹什麼用的?爲何個人每個cpp文件都必須包含stdafx.h?編程

這兩個文件用於創建一個預編譯的頭文件.PCH和一個預約義的類型文件STDAFX.OBJ。spa

因爲MFC體系結構很是大,包含許多頭文件,若是每次都編譯的話比較費時。所以,咱們把經常使用的MFC頭文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,而後讓stdafx.cpp包含這個stdafx.h文件。這樣,因爲編譯器能夠識別哪些文件已經編譯過,因此stdafx.cpp就只編譯一次,並生成所謂的預編譯頭文件(由於它存放的是頭文件編譯後的信息,故名)。orm

   若是讀者之後在編程時不想讓有些MFC頭文件每次都被編譯,也能夠將它加入到stdafx.h中。採用預編譯頭文件能夠加速編譯過程。編譯器

Windows和MFC的include文件都很是大,即便有一個快速的處理程序,編譯程序也要花費至關長的時間來完成工做。因爲每一個.CPP文件都包含相同的include文件,爲每一個.CPP文件都重複處理這些文件就顯得很傻了。 it

        爲避免這種浪費,AppWizard和Visual C++編譯程序一塊兒進行工做,以下所示: 編譯

  1.AppWizard創建了文件stdafx.h,該文件包含了全部當前工程文件須要的MFC include文件。且這一文件能夠隨被選擇的選項而變化。擴展

  2.AppWizard而後就創建stdafx.cpp。這個文件一般都是同樣的。程序

  3.而後AppWizard就創建起工程文件,這樣第一個被編譯的文件就stdafx.cpp。     4.當Visual C++編譯stdafx.cpp文件時,它將結果保存在一個名爲stdafx.pch的文件裏。 (擴展名pch表示預編譯頭文件。)      im

  5.當Visual C++編譯隨後的每一個.cpp文件時,它閱讀並使用它剛生成的.pch文件。 Visual C++再也不分析Windows include文件,除非你又編緝了stdafx.cpp或stdafx.h。     margin

 在這個過程當中你必須遵照如下規則:   

   ◎你編寫的任何.cpp文件都必須首先包含stdafx.h。

   ◎若是你有工程文件裏的大多數.cpp文件須要.h文件,順便將它們加在stdafx.h (後部)上,而後預編譯stdafx.cpp。

   ◎因爲.pch文件具備大量的符號信息,它是你的工程文件裏最大的文件。 若是你的磁盤空間有限,你就但願能將這個你從沒使用過的工程文件中的.pch文件刪除。執行程序時並不須要它們,且隨着工程文件的從新創建,它們也自動地從新創建

相關文章
相關標籤/搜索