Unexpected end while looking for precompiled header這時因為該模塊沒有包括預編譯頭文件“stdafx.h”的緣故。
VC用一個stdafx.cpp包含頭文件stdafx.h,然後在stdafx.h裡包含大部分系統頭文件,這樣編譯時VC就通過編譯stdafx.cpp把大部分系統頭文件預編譯進來了,在Debug目錄下有一個很大的文件*.pch,這裡就存儲了預編譯信息。
根據這個原理,如果這個pch損壞了或被刪除了,系統重新編譯時就會抱怨“cannot openprecompiled header file debug/*.pch”。這時怎麼解決這個問題呢,打開Project-》Setting對話框選C++頁,將Category下拉式列表框選中Precompiled Headers,最簡單的辦法就是選中第一個選項“Not using....",這樣就根本不用預編譯頭也不去尋找pch文件,就不會出錯了,但是這樣做的後果是每次編譯、連接都化更多的時間。也可以選第二個選項”Automatic ...",然後在“Through header”力填上stdafx.h,這樣如果沒有pch文件系統會自動生成一個pch,如果有的話就使用這個pch,這個選項是比較“智能”的。
第三個選項是強行創建一個pch文件,第四個選項是直接使用pch文件。當然“Through headers”裡都填stdafx.h了。
附贈一個小花招:
如果編譯、連接時總出稀奇古怪的錯誤或者調試時單步執行走的代碼都不符合自己的想法
因為你連接時一般都選用的incremental linking,每次增加一點,有可能把以前的錯誤
的東西留在連接出來的可執行文件裡了。不如徹底重新編譯、連接一遍。