一、解決方法
右鍵點擊你創建的項目,選擇“屬性標簽”點擊屬性,彈出“項目屬性頁”,在左側找到以下位置 配置屬性 --> C/C++ --> 預編譯頭,並選擇它:在右邊的菜單中選擇 “創建/使用預編譯頭”中的“不使用預編譯頭文件”點擊“確定”按鈕退出即可。
二、原因分析
編譯器一般都是以文件為單位進行編譯,如果修改了工程中的一個文件,那么將導致所有文件都要從新編譯,這樣的編譯將耗費很長時間。
為了提高編譯速度,將那些不常被修改,比較穩定,文件單獨包含到一個指定的頭文件中, 然后生成一個預編譯頭文件 *.pch 。 VC中默認的頭文件為 stdAfx.h, 但光有頭文件無法編譯,所以還要用到 StdAfx.cpp里只包含一句有效代碼,這樣編譯時,通過編譯 stdAfx.cpp就把大部分系統頭文件編譯進來, Debug目錄下便會產生一個 存儲了預編譯信息的 *.pch 文件。
如果 *.pch文件損壞或者不存在,就會出現,題目所示的無法打開預編譯頭文件的錯。
三、自己的理解和想法
原因分析很到位,但是網上的解決方案(如一)不是很好。我的理解是既然要生成*.pch文件,那就讓程序生成一個了,萬一后面要用的呢,而且還可以節省時間。
所以我的做法是在stdafx.cpp屬性里面選擇創建預編譯頭文件,然后先F7編譯stdafx.cpp文件,讓其生成*.pch文件,然后在編譯main.cpp文件。