一.背景
在VS2017中新建一个控制台应用程序,生成的工程中main函数所在的文件中,包含头文件:"stdafx.h"
将语句:#include "stdafx.h" 注释掉之后,VS工程编译错误如下:
二.解决
根据工程或者工程中源文件的设置,VS判断在编译源文件时是否需要查找预编译。如果设置了需要使用预编译头,而在源文件中没有include预编译头文件,就会报上面描述的错误。
而预编译头文件stdafx.h到底是什么意思呢?
stdafx英文全称:Standard Application Framework Extensions(标准应用程序框架的扩展)
新建立的window控制台应用程序中stdafx.h和stdafx.cpp的内容如下:(建立不同类型的应用程序,stdafx.h中包含的头文件是不同的)
stdafx.h
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
stdafx.cpp
#include "stdafx.h"
对工程进行编译时,会首先编译stdafx.cpp文件,然后对该源文件中引用的头文件进行预编译。因为stdafx.cpp中include了头文件stdafx.h,
所以会对stdafx.h中include的头文件进行预编译,预编译后会产生后缀名是.pch的预编译头文件。
当VS编译之后的源文件时,如果在这些源文件中include了stdafx.h就会使用刚刚生成的.pch预编译头文件。
这样做可以帮助代码中重复的包含头文件,以及提高代码的编译速度。
参考:https://www.cnblogs.com/webcyz/p/3590222.html
http://blog.csdn.net/liulina603/article/details/45043995
https://www.cnblogs.com/MuyouSome/p/3380033.html