c++ stdafx.h、targetver.h文件


遇到問題,趕緊記錄一下,免得過后忘了

如果預編譯頭會有stdafx.h、targetver.h文件。

stdafx.h標准系統包含文件的包含文件, 或是經常使用但不常更改的,特定於項目的包含文件。百度百科說是所謂頭文件預編譯,就是把一個工程(Project)中使用的一些MFC標准頭文件(如Windows.H、Afxwin.H)預先編譯,以后該工程編譯時,不再編譯這部分頭文件,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。

stdafx.h中沒有函數庫,只是定義了一些環境參數,使得編譯出來的程序能在32位的操作系統環境下運行。
Windows和MFC的include文件都非常大,即使有一個快速的處理程序,編譯程序也要花費相當長的時間來完成工作。由於每個.CPP文件都包含相同的include文件,為每個.CPP文件都重復處理這些文件就顯得很傻了。
即:當我們使用AppWizard來自動生成某些項目的時候,系統會自動把所需要include的頭文件在stdafx.h中先include一下,這樣,我們只需要直接include這個stdafx.h文件即可.因為同一個項目中的不同 源文件CPP都包含相同的include文件,這樣,為每個.CPP文件都重復include這些文件就顯得很傻了。當然如果你不用MFC的話就不用了。即:在每個.cpp文件中都include stdafx.h 就相當於包含了其他的如 iostream.h等文件
 
targetver定義了程序運行需要的最低Windows版本,如果你要在舊版本的Windows(如非NT架構的Win98)上運行,除了代碼部分還需要修改這個頭文件。
targetver.cpp里的宏定義_WIN32_WINDOWS,_WIN32_WINNT,WINVER, _WIN32_IE 分別為

前三個宏其實都是Windows的版本宏,在Windows 95,98,Me這一分支的OS中,Windows的定義的版本宏是_WIN32_WINDOWS。與此同時,Windows重新開發了NT系列,且其編號從NT4.0開始,經過Windows 2000,XP, Server 2003,Vista,Server2008,Win7,Win8. 在這一分支中,Windows的定義的版本宏是_WIN32_WINNT。_WIN32_WINDOWS宏便被廢棄了。

WINVER是_WIN32_WINDOWS或_WIN32_WINNT的別名。

 第四個是Windows IE瀏覽器的版本宏。瀏覽器各個版本宏的值定義在sdkddkver.h中

各版本具體見http://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html

 

 


免責聲明!

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



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