stdafx.h、stdafx.cpp的作用


這兩個文件用於建立一個預編譯的頭文件".PCH"和一個預定義的類型文件"STDAFX.OBJ"。由於MFC體系結構非常大,各個源文件中都包含許多頭文件,如果每次都編譯的話比較費時。那么,如果我們把常用的MFC頭文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后再讓stdafx.cpp包含這個stdafx.h文件。這樣,由於編譯器可以識別哪些文件已經編譯過,所以stdafx.cpp就只編譯一次(這里一定要有CPP文件,如果只有.h是不行的,因為頭文件是不能被編譯的),並生成所謂的預編譯頭文件(因為它存放的是頭文件編譯后的信息,故而得名)。
   [如果讀者以后在編程時不想讓自己源文件中引用的MFC頭文件每次都被編譯,也可以將它加入到stdafx.h中。采用預編譯頭文件方式,從而可以加速編譯過程。

Windows和MFC的include文件都非常大,即使有一個快速的處理程序,編譯程序也要花費相當長的時間來完成工作。由於每個.CPP文件都包含相同的include文件,為每個.CPP文件都重復處理這些文件就顯得很傻了。]
    為避免這種浪費,AppWizard和Visual C++編譯程序一起進行工作,如下所示:

     ◎AppWizard 建立了文件stdafx.h,該文件包含了所有當前工程文件需要的MFC include文件。且這一文件可以隨被選擇的選項而變化。
     ◎AppWizard然后就建立stdafx.cpp。這個文件通常都是一樣的。

     ◎然后AppWizard就建立起工程文件,這樣第一個被編譯的文件就是stdafx.cpp。

     ◎當Visual C++編譯stdafx.cpp文件時,它將結果保存在一個名為stdafx.pch的文件里。 (擴展名pch表示預編譯頭文件。
)
     ◎當Visual C++編譯隨后的每個.cpp文件時,它閱讀並使用它剛生成的.pch文件。 Visual C++不再分析Windows include文件,除非你又編緝了stdafx.cpp或stdafx.h。

    這個技術很精巧,你不這么認為嗎?(還要說一句,Microsoft並非是首先采用這種技術的公司,Borland才是。) 在這個過程中你必須遵守以下規則:

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

     ◎如果你有工程文件里的大多數.cpp文件需要.h文件,順便將它們加在stdafx.h (后部)上,然后預編譯stdafx.cpp。

     ◎由於.pch文件具有大量的符號信息,它是你的工程文件里最大的文件。

如果你的磁盤空間有限,你就希望能將這個你從沒使用過的工程文件中的.pch文件刪除。執行程序時並不需要它們,且隨着工程文件的重新建立,它們也自動地重新建立


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM