Standard Application Fram Extend
没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。

Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示:
◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFCinclude文件。且这一文件可以随被选择的选项而变化。//不大明白,是自动建立的吗?console不需要把
◎AppWizard然后就建立stdafx.cpp。这个文件通常都是一样的。
◎然后AppWizard就建立起工程文件,这样第一个被编译的文件就是stdafx.cpp。
◎当VisualC++编译stdafx.cpp文件时,它将结果保存在一个名为stdafx.pch的文件里。(扩展名pch表示预编译头文件。)
◎当VisualC++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。VisualC++不再分析Windowsinclude文件,除非你又编缉了stdafx.cpp或stdafx.h。
这个技术很精巧,你不这么认为吗?(还要说一句,Microsoft并非是首先采用这种技术的公司,Borland才是。)在这个过程中你必须遵守以下规则:
◎你编写的任何.cpp文件都必须首先包含stdafx.h。
◎如果你有工程文件里的大多数.cpp文件需要.h文件,顺便将它们加在stdafx.h(后部)上,然后预编译stdafx.cpp。
◎由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件。
如果你的磁盘空间有限,你就希望能将这个你从没使用过的工程文件中的.pch文件删除。执行程序时并不需要它们,且随着工程文件的重新建立,它们也自动地重新建立.

所谓头文件预编译,就是把一个工程(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"。//条件是?

Afx前缀是微软MFC一个小组的名称简写,并没有别的意义。
MFC的很多代码,包括全局函数名、宏、头文件名都使用了"Afx"。
Afx*.h是一组MFC的核心头文件,比如:
afxwin.h 定义MFC的核心和标准组件
afxext.h 定义MFC的扩展
afxdisp.h 是MFC自动化支持的类定义头文件
afxdb.h 是MFC的ODBC类封装

stdafx.h与Afx.h了解相关推荐

  1. afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requi

    问题: 在c++/cli控制台项目中,因为要使用cstdiofile类,所有包含了afx.h,但是报如下错误: "afx.h(24): fatal error C1189: #error : ...

  2. 1c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(24) : fatal error C1189: #err

    1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(24) : fatal error C1189: # ...

  3. fatal error C1083: 无法打开包括文件: “afx.h”: No such file or directory

      在用Visual Studio 2017打开一个工程进行编译时,报了如下错误: fatal error C1083: 无法打开包括文件: "afx.h": No such fi ...

  4. MFC Afx*.h 详解

    Afx前缀是微软MFC一个bai小组的名称du简写,并没有别的意义. MFC的很dao多代码,zhuan包括全局函数名.宏.shu头文件名都使用了"Afx". Afx*.h是一组M ...

  5. #include Windows.h 和 Winsock2.h冲突的改进解决方案

    #include <Windows.h> #include <Winsock2.h> 上面的代码会导致重定义错误, 原因就是 Windows.h 中包含了 Winsock.h( ...

  6. Linux的目录结构和头文件相关;哪里找- sys/types.h, sys/stat.h

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_29757283/article/ ...

  7. C语言stdio.h与stdlib.h的区别

    一.定位不同 1.stdlib.h是standard library标准库头文件,定位在通用工具函数. 2.stdio.h是standard input&output标准输入输出头文件,定位在 ...

  8. 最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)

    ===================================================== 最简单的基于libRTMP的示例系列文章列表: 最简单的基于librtmp的示例:接收(RT ...

  9. windows.h与winsock2.h的包含顺序

    大凡在Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误.诸如: 警告    4    war ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:深度卷积网络
  2. mysql 字符串大小写_Mysql 字符串类型及大小写
  3. javascript 动态修改css样式
  4. 工作226:for循环逻辑
  5. 【洛谷 - 快来签到】(数学,公式,溢出爆longlong的处理)
  6. SetupFactory安装制作心得
  7. 那就是我mdash;mdash;大名鼎鼎的C++缪博士
  8. 4月份全球新注册39.2万辆电动汽车 榜首并非Model 3
  9. 第一百九十八节,jQuery EasyUI,ProgressBar(进度条)组件
  10. keymap in ubuntu
  11. 第一章:开始启程-你的第一行Android代码
  12. 苏州电信套餐:华为526无线路由猫相关问题
  13. ex10_11修改Loan类
  14. 将文件按照文件名分类到文件夹
  15. 微信小程序设置页面全局背景色
  16. Spark 写入 MySQL 乱码问题
  17. 佛心禅语净灵台-转载
  18. 力扣解法汇总1765-地图中的最高点
  19. kotlin协程与线程池
  20. 一个没有演讲经验的人,怎样迅速提高演讲能力?

热门文章

  1. 中国电动汽车换电行业需求现状及未来发展规划报告2022-2028年版
  2. google浏览器搜索栏自动翻译消失如何找回
  3. python中文版下载官网-Python中文版
  4. 【附源码】计算机毕业设计java智慧校园系统设计与实现
  5. java bat转vbs_EXE2BAT(EXE转BAT)的vbs脚本
  6. 当今天下大势——个人观点
  7. 【系统测试】性能测试总结
  8. 你所表现的负责可能正是在逃避责任
  9. java毕业设计基地信息可视化mybatis+源码+调试部署+系统+数据库+lw
  10. SQL SERVER 2005安装:此计算机存在相同实例名解决办法