c语言错误c1010怎么办,fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h...
一、概念:
1、預(yù)編譯:就是編譯器首先編譯某個(gè)文件(稱為預(yù)編譯頭文件),然后將這個(gè)編譯結(jié)果保存起來(lái),之后如果有其他源文件include了這個(gè)“預(yù)編譯頭文件”的時(shí)候,則自動(dòng)從這個(gè)編譯結(jié)果提取需要的信息進(jìn)行編譯。
2、預(yù)編譯結(jié)果文件(Precompiled header
file):就是那個(gè)用來(lái)保存已經(jīng)編譯了的符號(hào)信息的文件(.PCH作為后綴)
3、生成預(yù)編譯結(jié)果文件(Create Precompiled header
file):我們說(shuō)源文件A通過(guò)文件B“生成預(yù)編譯結(jié)果文件”是指編譯A的時(shí)候?qū)⑵渲芯幾gB的編譯結(jié)果保存成預(yù)編譯結(jié)果文件。一般使用向?qū)У脑?#xff0c;A文件就是“stdafx.cpp”,B文件是“stdafx.h”。stdafx.cpp中就一行語(yǔ)句:
#include “stdafx.h”
4、使用預(yù)編譯頭(Using precompiled
header):我們說(shuō)某個(gè)源文件(a.cpp)通過(guò)“stdafx.h”來(lái)使用預(yù)編譯結(jié)果是指編譯a.cpp的時(shí)候,如果a.cpp第一行include語(yǔ)句是#include
“stdafx.h”的話,那么直接取預(yù)編譯結(jié)果文件的結(jié)果,不再重新編譯”stdafx.h”
二、向?qū)窃趺醋龅?#xff1f;
1、設(shè)置“stdafx.cpp”的預(yù)編譯選項(xiàng)是通過(guò)“stdafx.h”文件來(lái)“生成預(yù)編譯結(jié)果文件”。
2、其他源文件的預(yù)編譯選項(xiàng)設(shè)置是通過(guò)“stdafx.h”來(lái)“使用預(yù)編譯頭”
三、使用原則?
1、將相對(duì)穩(wěn)定的頭文件(比如CRT,STL,第三方固定的庫(kù))全部寫在stdafx.h中。(是否使用stdafx.h依賴個(gè)人喜好,不過(guò)使用stdafx.h可以和向?qū)П3忠恢?
2、全部源文件第一行都加#include “stdafx.h”。
3、一些不能修改的源文件(如果公共的代碼,不具備權(quán)限修改的代碼),設(shè)置他的預(yù)編譯選項(xiàng)是“不使用預(yù)編譯頭”。注意,一定不能是選擇“自動(dòng)生成預(yù)編譯頭”,因?yàn)檫@樣會(huì)將stdafx.h的結(jié)果沖掉(這個(gè)不知道是BUG還是設(shè)計(jì)的問題了,.^_^。)。
四、Q&A
Q、為什么不全部使用“自動(dòng)生成預(yù)編譯頭文件”?
A、“自動(dòng)生成預(yù)編譯頭文件”和什么都不用沒有什么兩樣,編譯速度沒有質(zhì)的提高。
Q、手工添加一個(gè)新的源文件到項(xiàng)目的時(shí)候,經(jīng)常出現(xiàn)類似錯(cuò)誤:
fatal error C1010: unexpected end of file while looking for
precompiled header directive
A、因?yàn)橄驅(qū)笔〉脑O(shè)置是“使用預(yù)編譯頭”,但是你新加的文件并沒有在第一行包含“stdafx.h”。解決的方法要么修改成“不使用預(yù)編譯頭”,要么添加一行#include
“stdafx.h”
Q、加stdafx.h和stdafx.cpp總覺得是和編譯平臺(tái)綁定了,不具備移植性?
A、其實(shí),注意一下stdafx.h的寫法就沒有問題了。我的解決方案是(stdafx.h的內(nèi)容):
–begin of file stdafx.h
#ifdef _WIN32
#include
“win.h”?//
泛指window下的公共頭文件
#else
#include
“l(fā)inux.h”?//
泛指linux下的公共頭文件
#endif
#include
“crt.h”?//泛指c標(biāo)準(zhǔn)庫(kù)
#include“stl.h”?//泛指STL庫(kù)
–end of file
或者更加簡(jiǎn)單一點(diǎn),如果不是VC編譯器,那么stdafx.h就什么內(nèi)容都不寫!
總結(jié)
以上是生活随笔為你收集整理的c语言错误c1010怎么办,fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实战小项目_猜数字小游戏
- 下一篇: 内存和CPU匹配方法详解