一、解决方法
右键点击你创建的项目,选择“属性标签”点击属性,弹出“项目属性页”,在左侧找到以下位置 配置属性 --> C/C++ --> 预编译头,并选择它:在右边的菜单中选择 “创建/使用预编译头”中的“不使用预编译头文件”点击“确定”按钮退出即可。
二、原因分析
编译器一般都是以文件为单位进行编译,如果修改了工程中的一个文件,那么将导致所有文件都要从新编译,这样的编译将耗费很长时间。
为了提高编译速度,将那些不常被修改,比较稳定,文件单独包含到一个指定的头文件中, 然后生成一个预编译头文件 *.pch 。 VC中默认的头文件为 stdAfx.h, 但光有头文件无法编译,所以还要用到 StdAfx.cpp里只包含一句有效代码,这样编译时,通过编译 stdAfx.cpp就把大部分系统头文件编译进来, Debug目录下便会产生一个 存储了预编译信息的 *.pch 文件。
如果 *.pch文件损坏或者不存在,就会出现,题目所示的无法打开预编译头文件的错。
三、自己的理解和想法
原因分析很到位,但是网上的解决方案(如一)不是很好。我的理解是既然要生成*.pch文件,那就让程序生成一个了,万一后面要用的呢,而且还可以节省时间。
所以我的做法是在stdafx.cpp属性里面选择创建预编译头文件,然后先F7编译stdafx.cpp文件,让其生成*.pch文件,然后在编译main.cpp文件。
时间: 2024-10-14 21:36:10