问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么要加#include "stdafx.h"

发布网友 发布时间:2022-06-22 23:26

我来回答

3个回答

热心网友 时间:2022-06-30 14:28

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

热心网友 时间:2022-06-30 14:28

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

Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示:
◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFCinclude文件。且这一文件可以随被选择的选项而变化。
◎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文件删除。执行程序时并不需要它们,且随着工程文件的重新建立,它们也自动地重新建立。

参考资料:http://zhidao.baidu.com/question/3711602.html?si=1

热心网友 时间:2022-06-30 14:29

  "stdafx.h",名称的英文全称为:Standard Application Framework Extensions

  所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
  使用方法:
  使用预编译头文件需要首先指定一个头文件,这个头文件包含不经常被改变的代码和其他的一些头文件。系统默认的是stdafx.h。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找几本一流的小说。类型' 完结什么的无所谓. 不要幼稚就好 沈阳职高学校排名 沈阳哪个公办职高和中专好 沈阳有哪些职高学校比较好? gpw一代和二代的区别有哪些 罗技gpw一代和二代区别介绍 第一代和第二代的区别 gpw二代和一代有什么区别 二代和一代区别详情分享 设张举措的意思设张举措的解释设张举措接龙 设张的成语设张的成语是什么 人字地砖铺法怎么找平方 怎么点击360浏览器图标打开新的浏览器窗口 08老速腾胎压监测怎么设定? 速腾胎压监测指示灯亮怎么回事 大众速腾1.2T胎压监测在那里 大众速腾胎压监测发射模块 速腾原装胎压监测控制单元断路 ubuntu server 换主板后没网络怎么办。 男96属鼠和女89属蛇的相配吗 有电视WIFI几十元住一晚 太空舱宾馆你会住吗 重大疾病保险确诊就赔付保额吗,即使治病用不到哪么多钱. 复联4:明知道灵魂宝石的代价,为什么黑寡妇和鹰眼还要去送死? 取卵过程:卵子是怎样取出来的 怎样才能真正的控制住自己不玩物丧志 人生何几是什么意思 白居易的诗中提到佛教的诗有哪些 白居易《念佛吟》其中有“达人应笑我,多却阿弥陀;达也作么生,不达... 学会忘记懂得放弃为提的1000字作文 作文:学会忘记 逆变器输入端220伏不错接家用220伏当输入了,有保护吗? 压敏电阻能否用在50HZ、220v电源变压器输入端作防雷过压保护、 佳能328碳粉加哪种最好 #include "StdAfx.h" 这个头文件的写法对了没有?有啥用? vc如何在同一工程中运行MFC的.cpp文件和普通的.cpp文件中的一个_百度... 在小城市做商标注册代理,作为一个新手还怎么上路,求老司机提点... “早安打工人”已被注册商标,网络热词注册商标有何意义? 上海老司机企业服务有限公司怎么样? 在c语言中存储“abc”要占用___个字节 字符串"ABC"在内存占用的字节数是 ? 字符串char a[]=”abc”;在内存中占用的字节数为( )a 3 b 4 字符串"abc"占内存空间()个字节,"'eoa\56*"占()个字节 字符串"ABC\"的内存字节长度怎么算? 假定某列的数据类型是nvarchar(10),存放字符串“abc”,占用空间的... 为什么总是觉得疲倦,脑袋空荡荡得,健忘,心里压抑,身体又没啥毛病... 感觉心里空荡荡的怎么办? 现代战舰怎么充值 现代战舰如何快速升到15级 现代战舰怎么申请1万金条 战舰打造无限金币不会闪退可以正常下载 求战舰打造无限金币版 无需越狱 我的专业是网络工程,这个对C语言要求有多深,主要要把那些基础课...