stdafx.h文件

  stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展),stdafx.h并不是标准的C++系统头文件,也就是说,该文件本质上是Visual Studio自定义的头文件,由编译器生成,名称可以在属性管理器中自定义

  从内容上讲,stdafx.h文件主要存放以下两类语句——

  • 标准系统包含文件,比如iostream string algorithm等这些;
  • 经常使用但是不常更改的项目特定文件

  如果项目比较大, 定义了大量数据结构,并include了第三方库,那么不妨把这些都放入stdafx.h文件中,这样,可以通过预编译头文件的方式加速编译过程。你需要在所有的独立文件中的第一行引入该文件——

#include"stdafc.h"// 使用了VS的预编译机制了之后,需要在每个文件的第一行加入该语句,否则会报错

  使用了VS的预编译机制了之后,需要在每个文件的第一行加入该语句,否则会报错。同时,编译器还会生产对应的stdafx.cpp文件,但该文件仅有#include"stdafx.h"一行语句,作用是用于编译预编译头文件stdafx.h中的内容。

Visual Studio预编译原理

  所谓头文件预编译precompiledheader,或称预编译头),就是把一个工程中常用的一些头文件预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译结果,这样可以加快编译速度,节省时间。
  Visual Studio提供了相关预编译头机制,在属性管理器中控制:
 
  在创建项目的时候,用户选择预编译头文件模式,那么VS会自动生成stdafx.hstdafx.cpp文件,如上文所述,stdafx.cpp文件中仅包含’stdafx.h’,作用是编译该文件中的内容。在第一次编译项目时,将头文件stdafx.h中所包含的所有头文件进行编译,从而生成一个预编译头文件project.pch,在之后的编译中,只要stdafx.h文件没有发生变化(时间戳没有变化),则编译器会跳过编译文件,直接使用该中间文件project.pch,之后所有包含stdafx.h文件的独立文件编译时都可以直接使用该中间文件,即一次编译,重复使用,从而提高效率。
  实际上,这种做法是一种以空间换时间的做法,把不常改动的部分放入stdafx.h中,只要stdafx.h文件没有发生变化,那么编译的时候可以直接使用中间文件,而节省编译时间。但同时必然增加项目的存储空间占用。

参考链接

  • 百度百科:https://baike.baidu.com/item/stdafx.h/10326842?fr=aladdin
  • Visual Studio中头文件stdafx.h的作用:https://www.cnblogs.com/yhjoker/p/8110684.html
  • stdafx.h到底有什么用:https://blog.csdn.net/follow_blast/article/details/81704460
  • 微软官方文档:https://docs.microsoft.com/zh-cn/cpp/ide/precompiled-header-files?view=vs-2017

Visual Studio中#includestdafx.h的作用相关推荐

  1. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>

    Visual Studio 中使用万能头文件 #include 前言 最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h> ,但VS中并 ...

  2. 在 Visual Studio 中使用 Q# 进行量子编程

    1 量子计算机与量子编程 1.1 量子计算机 Quantum computing is computing using quantum-mechanical phenomena, such as su ...

  3. 如何在Visual Studio中自动格式化代码?

    我知道Visual Studio可以自动格式化以使我的方法和循环正确缩进,但是我找不到该设置. #1楼 对于Visual Studio 2010/2013/2015/2017 设置文档格式( Ctrl ...

  4. 如何在Visual Studio中直接使用示例代码浏览器搜索下载和管理代码示例

    今天微软一站式示例代码库团队发布了示例代码浏览器的Visual Studio 扩展.有了它,开发人员就可以在Visual Studio 2010里直接通过Alt+F1快捷键搜索示例代码,并方便地对示例 ...

  5. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )

    文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...

  6. Qt中的ui文件是c语言文件吗,c-Qt-UI文件未在Visual Studio中更新

    我最近开始使用Qt(某种速成课程)并将其与Visual Studio集成(如here所述),现在由于某种原因,在进行了以下更改后,文件似乎没有使用保存的.ui文件进行更新. Qt设计器. 该文件正在正 ...

  7. 详解在Visual Studio中使用git版本系统 [转]

    详解在Visual Studio中使用git版本系统    作者:掷鸡蛋者 , 发布于2012-6-21   这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指 ...

  8. windows 运行linux c++,Visual studio中使用C++的Linux 开发

    Visual studio中使用C++的Linux 开发 05/15/2017 14 分钟可看完 本文内容 [原文发表地址] Linux development with C++ in Visual ...

  9. 转到Visual Studio中的匹配括号吗?

    在Visual Studio 2008中,有没有一种方法可以从右括号到右括号? 我发现有很多关于突出显示括号的内容,但是没有关于将光标移动到括号的内容. (此问题的VB.NET版本: 在" ...

  10. 关于Visual Studio 中“scanf”输入报错的解决方法

    有很多初次接触VS的同学会发现,当我们在写完一段代码,代码中用到scanf输入变量时,在调试编译的过程中就会出现错误: warning C4996: 'scanf': "This funct ...

最新文章

  1. [ACM] hdu 1253 胜利大逃亡 (三维BFS)
  2. greenplum 存储过程_如何使用Greenplum提升PB级数据处理能力
  3. centos 7 安装tomcat
  4. 【需求】手机无线投屏到电视需求整理,Miracast无线投屏功能应用及需求
  5. mysql原生分页语句_mysql原生分页
  6. QT的QParameter类的使用
  7. 怎么做应力应变曲线_做冲压材质分析很重要,材料性能分析汇总~
  8. CodeForces - 1350C Orac and LCM(数论)
  9. 算法分析设计--递归算法
  10. oracle 9.2.0.1下载,Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
  11. python 读取鼠标选中文本_python怎么读取文本文件
  12. 反向代理服务器的工作原理 (转)
  13. 导图速读《高性能MySQL》
  14. 2.3用卡诺图化简逻辑函数210807
  15. html5制作旋转正方体,如何制作一个旋转的正方体
  16. Eclipse中使用SQL server 2008数据库以及实现eclipse与数据库的连接和操作数据库
  17. 【操作系统】—I/O设备的基本概念和分类
  18. 简单Java小程序----有界面ATM机
  19. 坦克机器人自动照看你的秘密花园
  20. C及C++语言进阶习题解集

热门文章

  1. cad中lisp文件给恶作剧_AutoCAD小秘密062:紧急插播,关于LISP的病毒防治
  2. 荷兰国旗问题(C语言)
  3. 计算机行业未来作文,未来的计算机作文
  4. 英文版 《UNIX 网络编程.卷一 (UNIX Network Programming .volume1. 3rd edition)》(pdf)高清精校版下载
  5. HTML5期末大作业:我的家乡网站设计——我的家乡-南京(4页)
  6. Ukey双因素身份认证步骤 安当加密
  7. Java中什么是句柄
  8. D5M数据手册英文版
  9. JAVA 二维码图片生成和base64位加密解密
  10. c语言冒泡排序算法解析