• stdafx.h Standard Application Framework Extensions


    当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CPP都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。

    具体在stdafx.h中需要include什么头文件,取决于用户在AppWizard中的选择.

    比如:

    #include <afxwin.h>         // MFC core and standard components
    #include <afxext.h>          // MFC extensions
    #include <afxole.h>         // MFC OLE classes
    #include <afxodlgs.h>     // MFC OLE dialog classes
    #include <afxdisp.h>       // MFC Automation classes
    ......

    等等,这样,就方便多了.所以,stdafx.h是自动生成的.这就使得用户在开发中不必在每一个cpp文件中都烦琐的include头文件了,而且,维护起来也方便.

    在生成stdafx.h头文件的同时,也生成了stdafx.cpp源文件,该源文件只包含#include "stdafx.h"语句,这是在编译过程中第一个被编译的文件,编译的结果保存在一个名为stdafx.pch的文件里。 (扩展名pch表示预编译头文件。)当Visual C++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。 Visual C++不再分析Windows  include文件,除非用户又编缉了stdafx.cpp或stdafx.h。

    看了这样的讲解,我马上就实验了一下,自己新建立一个windows窗口项目,很快,就生成了stdafx.cpp和stdafx.h.

    并且,在主源文件form1.cpp中,就include此头文件stdafx.h.

    以上情况,只在使用AppWizard来自动生成项目的时候,才出现.否则,就没有必要include此头文件stdafx.h了


    stdafx.h和stdafx.cpp是工程自动生成和必须编译的。

        stdafx.h存在的理由:由于MFC体系结构非常大,包含许多头文件,如果每次都编译的话比较费时。因此我们把常用的MFC头文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后让stdafx.cpp包含这个stdafx.h文件,进行编译。由于编译器可以识别哪些文件已经编译过,所以stdafx.cpp就只编译一次,并生成所谓的预编译头文件。简单。

        stdafx.h用法:以后在编程时不想让有些MFC头文件每次都被编译,也可以将它加入到stdafx.h中。采用预编译头文件可以加速编译过程。


  • 相关阅读:
    ASP.NET Core 静态资源的打包与压缩
    算法
    字符串反转
    js 获取随机数
    AspNetCore MVC 跨域
    add digits
    1-bit and 2-bit Characters
    删除字符串中出现次数最少的字符
    洗牌
    哈夫曼编码
  • 原文地址:https://www.cnblogs.com/anorthwolf/p/2009051.html
Copyright © 2020-2023  润新知