預編譯標頭檔案詳解

2021-06-22 14:09:25 字數 1297 閱讀 4220

vc.net預設情況下使用預編譯頭(/yu),不明白的在加入新.h檔案後編譯時總出現fatal error c1010: 在查詢預編譯頭指令時遇到意外的檔案結尾的錯誤。解決方法是在在include標頭檔案的地方加上#include"stdafx.h",

或者打專案屬性,找到「c/c++」資料夾,單擊「預編譯頭」屬性頁。修改「建立/使用預編譯頭」屬性為「不使用預編譯頭」。

這裡介紹vv2003的預編譯功能的使用,由於預編譯詳細使用比較的複雜,這裡只介紹幾個最重要的預編譯指令: /yu, /yc,/yx,/fp。

#include// mfc core and standard components

#include// mfc extensions

#include// mfc automation classes

#include// mfc support for internet explorer 4 common controls

#include

這些正是使用mfc的必須包含的標頭檔案,當然我們不太可能在我們的工程中修改這些標頭檔案的,所以說他們是穩定的。

那麼我們如何指定它來生成預編譯標頭檔案。我們知道乙個標頭檔案是不能編譯的。所以我們還需要乙個cpp檔案來生成.pch 檔案。這個檔案預設的就是stdafx.cpp。在這個檔案裡只有一句**就是:#include「stdafx.h」。原因是理所當然的,我們僅僅是要它能夠編譯而已――也就是說,要的只是它的.cpp的副檔名。我們可以用/yc編譯開關來指定stdafx.cpp來生成乙個.pch檔案,通過/fp編譯開關來指定生成的pch檔案的名字。開啟project ->setting->c/c++ 對話方塊。把category指向precompiled header。在左邊的樹形檢視裡選擇整個工程,如下圖:

這樣,我們就設定好了預編譯標頭檔案。也就是說,我們可以使用預編譯頭功能了。以下是注意事項:

1):如果使用了/yu,就是說使用了預編譯,我們在每個.cpp檔案的最開頭,我強調一遍是最開頭,包含你指定產生pch檔案的.h檔案(預設是stdafx.h)不然就會有問題。如果你沒有包含這個檔案,就告訴你unexpected file end. 如果你不是在最開頭包含的,你自己試以下就知道了,絕對有很驚人的效果。 (原因就在於編譯器編譯的時候不會編譯stdafx.h前面的標頭檔案)

2)如果你把pch檔案不小心丟了,根據以上的分析,你只要讓編譯器生成乙個pch檔案就可以了。也就是說把 stdafx.cpp(即指定/yc的那個cpp檔案)重新編譯一遍就可以了。當然你可以傻傻的 rebuild all。簡單一點就是選擇那個cpp檔案,按一下ctrl + f7就可以了。

結論:

預編譯標頭檔案

stdafx.h標頭檔案的作用 今天在改乙個很大的程式,慢慢看,慢慢改。突然發現乙個.c檔案,裡面什麼也沒有,就幾個標頭檔案,我一看,我靠,這不是把簡單的問題搞複雜了嗎,隨手刪掉那個c檔案。結果不能編譯了,我靠 fatal error c1083 cannot open precompiled he...

預編譯標頭檔案

一 預編譯標頭檔案使用經驗 如果預編譯標頭檔案被正確使用時,它確實大大提高我們程式設計的效率 你工作中,有多少時間是在等編譯完成?很多吧,這個時候一般都很無聊,無奈,浪費時間 但是他太容易用錯了.下面是幾種常見的錯誤用法.1 在預編譯標頭檔案裡include自己的標頭檔案 當然,如果你的標頭檔案不經...

預編譯標頭檔案

預編譯標頭檔案 今天在改乙個很大的程式,慢慢看,慢慢改。突然發現乙個.c檔案,裡面什麼也沒有,就幾個標頭檔案,我一看,我靠,這不是把簡單的問題搞複雜了嗎,隨手刪掉那個c檔案。結果不能編譯了,我靠 fatal error c1083 cannot open precompiled header fil...