2007年4月25日星期三

VC MFC之“stdafx.h”释疑

author:nforcex
所谓头文件预编译,就是把一个工程(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"。
换句话说:Stdafx.cpp是一个只有一条语句(#include "stdafx.h")的空文件;Stdafx.h是Visual C++为每个项目配置的用来预编译的文件,在Stdafx.h文件中可以加入应用程序所需的头文件;那有人会问afx是什么意思? afx是Application Framework 的缩写,afx_ 泛指MFC中的全局变量和全局函数,af 就是 application framework,x添进去为了凑出三个字母吧。

没有评论: