Visual Studio中#includestdafx.h的作用
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.h
和stdafx.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的作用相关推荐
- Visual Studio 中使用万能头文件 #include <bits/stdc++.h>
Visual Studio 中使用万能头文件 #include 前言 最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h> ,但VS中并 ...
- 在 Visual Studio 中使用 Q# 进行量子编程
1 量子计算机与量子编程 1.1 量子计算机 Quantum computing is computing using quantum-mechanical phenomena, such as su ...
- 如何在Visual Studio中自动格式化代码?
我知道Visual Studio可以自动格式化以使我的方法和循环正确缩进,但是我找不到该设置. #1楼 对于Visual Studio 2010/2013/2015/2017 设置文档格式( Ctrl ...
- 如何在Visual Studio中直接使用示例代码浏览器搜索下载和管理代码示例
今天微软一站式示例代码库团队发布了示例代码浏览器的Visual Studio 扩展.有了它,开发人员就可以在Visual Studio 2010里直接通过Alt+F1快捷键搜索示例代码,并方便地对示例 ...
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...
- Qt中的ui文件是c语言文件吗,c-Qt-UI文件未在Visual Studio中更新
我最近开始使用Qt(某种速成课程)并将其与Visual Studio集成(如here所述),现在由于某种原因,在进行了以下更改后,文件似乎没有使用保存的.ui文件进行更新. Qt设计器. 该文件正在正 ...
- 详解在Visual Studio中使用git版本系统 [转]
详解在Visual Studio中使用git版本系统 作者:掷鸡蛋者 , 发布于2012-6-21 这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指 ...
- windows 运行linux c++,Visual studio中使用C++的Linux 开发
Visual studio中使用C++的Linux 开发 05/15/2017 14 分钟可看完 本文内容 [原文发表地址] Linux development with C++ in Visual ...
- 转到Visual Studio中的匹配括号吗?
在Visual Studio 2008中,有没有一种方法可以从右括号到右括号? 我发现有很多关于突出显示括号的内容,但是没有关于将光标移动到括号的内容. (此问题的VB.NET版本: 在" ...
- 关于Visual Studio 中“scanf”输入报错的解决方法
有很多初次接触VS的同学会发现,当我们在写完一段代码,代码中用到scanf输入变量时,在调试编译的过程中就会出现错误: warning C4996: 'scanf': "This funct ...
最新文章
- [ACM] hdu 1253 胜利大逃亡 (三维BFS)
- greenplum 存储过程_如何使用Greenplum提升PB级数据处理能力
- centos 7 安装tomcat
- 【需求】手机无线投屏到电视需求整理,Miracast无线投屏功能应用及需求
- mysql原生分页语句_mysql原生分页
- QT的QParameter类的使用
- 怎么做应力应变曲线_做冲压材质分析很重要,材料性能分析汇总~
- CodeForces - 1350C Orac and LCM(数论)
- 算法分析设计--递归算法
- oracle 9.2.0.1下载,Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
- python 读取鼠标选中文本_python怎么读取文本文件
- 反向代理服务器的工作原理 (转)
- 导图速读《高性能MySQL》
- 2.3用卡诺图化简逻辑函数210807
- html5制作旋转正方体,如何制作一个旋转的正方体
- Eclipse中使用SQL server 2008数据库以及实现eclipse与数据库的连接和操作数据库
- 【操作系统】—I/O设备的基本概念和分类
- 简单Java小程序----有界面ATM机
- 坦克机器人自动照看你的秘密花园
- C及C++语言进阶习题解集
热门文章
- cad中lisp文件给恶作剧_AutoCAD小秘密062:紧急插播,关于LISP的病毒防治
- 荷兰国旗问题(C语言)
- 计算机行业未来作文,未来的计算机作文
- 英文版 《UNIX 网络编程.卷一 (UNIX Network Programming .volume1. 3rd edition)》(pdf)高清精校版下载
- HTML5期末大作业:我的家乡网站设计——我的家乡-南京(4页)
- Ukey双因素身份认证步骤 安当加密
- Java中什么是句柄
- D5M数据手册英文版
- JAVA 二维码图片生成和base64位加密解密
- c语言冒泡排序算法解析