stdafx.h、stdafx.cpp的作用

来源:互联网 发布:清华大学刘树红 知乎 编辑:程序博客网 时间:2024/05/29 21:18

所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 

预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 

编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。 

因此,所有的CPP实现文件第一条语句都是:#include "stdafx.h"。        

这两个文件用于建立一个预编译的头文件.PCH和一个预定义的类型文件STDAFX.OBJ。由于MFC体系结构非常大,包含许多头文件,如果每次都编译的话比较费时。因此,我们把常用的MFC头文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后让stdafx.cpp包含这个stdafx.h文件。这样,由于编译器可以识别哪些文件已经编译过,所以stdafx.cpp就只编译一次,并生成所谓的预编译头文件(因为它存放的是头文件编译后的信息,故名)。
        如果读者以后在编程时不想让有些MFC头文件每次都被编译,也可以将它加入到stdafx.h中。采用预编译头文件可以加速。


个人理解:

因为.h文件不能单独编译,所以专门用一个StdAfx.cpp文件(仅包含一句#include"StdAfx.h")来生成预编译文件"项目名.pch"放在项目文件中以避免重复的编译工作。
"项目名.pch"存放在项目的Debug文件夹中,里面存放的是二进制码
Stdafx.h文件必须得包含在"项目名.cpp"文件中否则无法通过编译

原创粉丝点击