+ -
当前位置:首页 → 问答吧 → STDAFX.CPP文件问题

STDAFX.CPP文件问题

时间:2011-12-06

来源:互联网

为什么我在工程里的stdafx.cpp文件里面什么都没包含
却能编译stdafx.cpp文件,且能生成StdAfx.obj和Test2.pch文件

作者: ewfc12ewrew   发布时间: 2011-12-06

只要是.cpp文件,都会生成.obj文件,但是Obj文件中对应的Code Section可能没有代码,这也是没有问题的.
.pch文件是预编译文件,那为什么需要预编译头文件?一句话:提高编译速度.

========???
如何使用预编译头文件以提高编译速度?要使用预编译头文件,必须指定一个头文件(.H),它包含我们不会经常修改的代码和其他的头文件,然后用这个头文件(.H)来生成一个预编译头文件(.PCH)VC默认的头文件就是StdAfx.h,因为头文件是不能编译的,所以我们还需要一个.CPP文件来作桥梁,VC默认的文件为StdAfx.cpp,这个文件里只有一句代码就是:#include "StdAfx.h".接下来要用它生成.PCH文件,涉及到几个重要的预编译指令:/Yu,/Yc,/Yx,/Fp.简单地说,/Yc是用来生成.PCH文件的编译开关.在Project->setting->C/C++的Category里的Precompiled Header,然后在左边的树形视图中选择用来编译生成.PCH文件的.CPP文件(默认即StdAfx.cpp)你就可以看到/Yc这个开关,它表示这个文件编译了以后是否生成.PCH文件(可能/Yc的c表示create)./Fp指令指定生成的.PCH文件的名字及路径(可能/Fp的p代表path)./Yu的u即use使用,工程中只要包括了.H文件的文件都会有这个/Yu指令.如果选择自动Automatic...的话则原来为/Yc的地方就换成了/Yx指令.如果选择自动,则每次编译时编译器会看以前有没有生成过.PCH文件,有则不现生成否则就再次编译产生.PCH文件. 

作者: yuucyf   发布时间: 2011-12-06