Visual Studio中#include"stdafx.h"的作用

版权声明:假装这里有个版权声明…… https://blog.csdn.net/CV_Jason/article/details/87475644

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文件没有发生变化,那么编译的时候可以直接使用中间文件,而节省编译时间。但同时必然增加项目的存储空间占用。

参考链接

猜你喜欢

转载自blog.csdn.net/CV_Jason/article/details/87475644