VC预编译头文件

来源:互联网 发布:淘宝麦先生店铺可靠吗 编辑:程序博客网 时间:2024/05/12 12:52

所谓的预编译头就是把一个工程中的某一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件。这些预先编译好的代码可以是任何的C/C++代码,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。生成预编译头文件很耗时间。预编译头文件通常很大,通常有6-7M大。应该及时清理那些没有用的预编译头文件。  
   
  编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西如宏等,都要重新处理一遍。VC的预编译头文件保存的正是这部分信息,以避免每次都要重新处理这些头文件。  
  预编译头的作用:  
           
  要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch文件)  
   
 VC工程里的  StdAfx.h这个文件就是这样一个头文件,它是可以任意命名的,只不过VC的默认命名为StdAfx.h。我们来考察一个典型的由AppWizard生成的MFC   Dialog   Based 程序的预编译头文件。这个头文件里的内容一般如下:  
   
  //   stdafx.h   :   include   file   for   standard   system   include   files,  
  //     or   project   specific   include   files   that   are   used   frequently,   but  
  //             are   changed   infrequently  
  //  
  #if   !defined(AFX_STDAFX_H__AC2D3C17_0808_4AB5_B6B7_CABF7808B0B7__INCLUDED_)  
  #define   AFX_STDAFX_H__AC2D3C17_0808_4AB5_B6B7_CABF7808B0B7__INCLUDED_  
  #if   _MSC_VER   >   1000  
  #pragma   once  
  #endif   //   _MSC_VER   >   1000  
  #define   VC_EXTRALEAN //   Exclude   rarely-used   stuff   from   Windows   headers  
  #include   <afxwin.h>                   //   MFC   core   and   standard   components  
  #include   <afxext.h>                   //   MFC   extensions  
  #include   <afxdisp.h>                 //   MFC   Automation   classes  
  #include   <afxdtctl.h> //   MFC   support   for   Internet   Explorer   4   Common   Controls  
  #ifndef   _AFX_NO_AFXCMN_SUPPORT  
  #include   <afxcmn.h> //   MFC   support   for   Windows   Common   Controls  
  #endif   //   _AFX_NO_AFXCMN_SUPPORT  
  //{{AFX_INSERT_LOCATION}}  
  //   Microsoft   Visual   C++   will   insert   additional   declarations   immediately   before   the   previous   line.  
  #endif   //   !defined(AFX_STDAFX_H__AC2D3C17_0808_4AB5_B6B7_CABF7808B0B7__INCLUDED_)  
   
  这里面包含的头文件正是使用MFC的必须包含的头文件,当然我们不太可能在我们的工程中修改这些头文件的,所以说它们是稳定的。并且,StdAfx.h的位置必须在其它的包含的头文件之前,否则会出大量错误。  
   
 对于VC来说,单独一个头文件是不能编译的。所以我们还需要一个cpp文件来生成.pch  文件。这个文件默认的就是StdAfx.cpp。在这个文件里只有一句代码就是:#include  “Stdafx.h”。其作用仅仅就是要它具有.cpp的扩展名而能够被编译而已。可以用  /Yc编译器选项来指定某一个文件来生成一个相关的预编译头文件,通过   /Fp编译器选项来指定生成的pch文件的名字,通过  /Yu编译器选项来指定整个工程的相关预编译头文件。

原创粉丝点击