: 编译时总出这个错误为什么? : fatal error C1010: unexpected end of file while looking for precompiled : header directive : 我查了msdn好像不是他说的错误原因.
这是预编译头文件没有包括进来, 有两种解决办法, 一是把所有的源程序文件前面都加上#include <stdafx.h> 第二种方法是,如果你不原意改变源文件就在菜单上选择 Project->Settings... 选择相应的配置(如果你是用Debug方式编译,就选Debug方式,如果Release方式就用 Release) 然后把下面的源文件树打开,选择没有加上面那个include语句的文件,在右边把有关 precompiled的项目取消或选成none precompiled之类的选项就成了.
以下选自jjhou的网站
> 2. 使用 AppWizard Project file 中想要加入 .cpp file
> 在 Compiling 過程會被要求請加入 "stdafx.h"
> 請問可以避免嗎?
你是問「一個 project 之中可否不要 stdafx.h」嗎?答案是可以,
但你的日子會從此更辛勞些。
隨便看一個由 AppWizard 產生的 project,其 stdafx.h 內是一些
必要的 include files(例如 afxwin.h)。對應於 stdafx.h 則有
一個 stdafx.cpp,其內只是 #include "stdafx.h"。這有什麼用意?
用意是,讓 stdafx.cpp 編譯出一個 stdafx.obj,成為
所謂的 "pre-compile-header"(需搭配特殊 compile option。
AppWizard 會為我們的 project 自動設定這個特殊的 option),
可大幅降低第二次(以降)的編譯所需時間(因為標準 MFC headers
不需再編譯一次)。
往後,你每使用 ClassWizard 協助開發此程式,ClassWizard 便有
可能在 stdafx.h 中增加新的 include files。例如,你若選用
MFC template classes,stdafx.h 中便會增加 #include <afxtempl.h>。
如果你不要 afxstd.h,意味你得自己 take care 這些事情。
--- the end