受欢迎的博客标签

vs2019 无法打开源文件stdafx.h 的问题

Published

原因:

Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。

打开stdafx.h文件,如下:

// stdafx.h : 标准系统包含文件的包含文件,  
// 或是经常使用但不常更改的  
// 特定于项目的包含文件  
//  

#pragma once  

#include "targetver.h"  

#include <stdio.h>  
#include <tchar.h>  



// TODO: 在此处引用程序需要的其他头文件 

stdafx.cpp文件:

#include "stdafx.h"  

 

说明你的工程里没有stdafx.h这个文件
这个是用来支持预编译头等功能,如果你用vs创建c++工程,他会帮你默认生成一个。

解决办法:

删掉include这行就行了
如果提示必须包含stdafx.h
可以在工程属性里,把使用预编译头选项 取消。

只用 #include <stdio.h>

 

可以自己设置自己的预编译文件,不一定非要是stdafx.h

右击stdafx.cpp文件,选择【属性】-【C/C++】-【预编译头】-【创建/使用预编译头】

可以看到有3个选项:【创建预编译头】、【使用预编译头】和【不使用预编译头】。

stdafx.cpp肯定选择的是【创建预编译头】

============================================================================

再右击Test.cpp文件,选择【属性】-【C/C++】-【预编译头】-【创建/使用预编译头】

可见,它选择的是【使用预编译头】,下面选的文件是StdAfx.h文件,最下面指明的是pch文件的路径

 

创建自己的预编译文件,其实过程正如上面我们讲的过程。 
如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么

1,把这些头文件全部写到一个头文件里面去,比如写到preh.h

2,写一个preh.c,里面只一句话:#include “preh.h” ,为了生存pch预编译文件

3,对于preh.c,在【属性】里面设置【创建预编译头】,对于其他.c文件,设置【使用预编译头】

解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题

由于stdafx.h文件的特殊性,不能直接使用#include “../stdafx.h”方法解决,通过网上查找资料,发现以下方法可以解决问题,
属性->配置属性->C/C++->常规->附加包含目录
添加$(ProjectDir),此时在进行编译就不会出现找不到stdafx.h的错误了。查看Macro,得知$(ProjectDir)就是指向 Source目录的路径,而stdafx.h文件就在该目录下