vc中stdafx作用

来源:互联网 发布:java http传输协议 编辑:程序博客网 时间:2024/05/28 05:19
 
Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。因为同一个项目中的不 同.CPP源文件都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。为避免这种浪 费,AppWizard和Visual C++编译程序一起进行工作,如下所示:
◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFC include文件。且这一文件可以随被选择的选项而变化。
◎AppWizard然后就建立stdafx.cpp。这个文件通常都是一样的。
◎然后AppWizard就建立起工程文件,这样第一个被编译的文件就是stdafx.cpp。
◎当VisualC++编译stdafx.cpp文件时,它将结果保存在一个名为stdafx.pch的文件里。(扩展名pch表示预编译头文件。)
◎当VisualC++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。Visual C++不再分析Windows include文件,除非你又编缉了stdafx.cpp或stdafx.h。
在这个过程中你必须遵守以下规则:
◎你编写的任何.cpp文件都必须首先包含stdafx.h。
◎如果你有工程文件里的大多数.cpp文件需要.h文件,顺便将它们加在stdafx.h(后部)上,然后预编译stdafx.cpp。
由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件。
如果你的磁盘空间有限,你就希望能将这个你从没使用过的工程文件中的.pch文件删除。执行程序时并不需要它们,且随着工程文件的重新建立,它们也自动地重新建立。

         对于加入到工程中的cpp文件,应该检查是否在第一行显式的包含stdafx.h头文件,在这个#include "stdafx.h"行前面的所有代码将被忽略,所以其他头文件应该在这一行后面被包含。
对于.c文件,由于不能包含stdafx.h,因此可以通过Project settings把它的预编译头设置为"不使用",方法是:
弹出Project settings对话框
选择C/C++ Category
选择Precompilation Header
选择不使用预编译头。

使用小记:将每个.cpp文件需要的.h文件include在stdafx.cpp中,这些.h文件可以是自己定义的。另外在其他.h文件需要stdafx.cpp中的头文件时不需要引用这些头文件了,也不需要引用#include "stdafx.h"

注:AFX:---AFX is an abbreviation for a group. The MFC group was originally called the "Application Framework group" during the inception of MFC.However, X doesn‘t stand for anything other than sounding cool. The original AFX group was renamed to MFC long ago. There is no current AFX group. But the "AFX" hasn‘t been changed to "MFC" for the compatibility

原创粉丝点击