浏览 4552 次
锁定老帖子 主题:C++编译时间、PCH、stdafx.h
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-31
预编译头文件(扩展名为.PCH)是把一个工程中较稳定的代码预先编译好放在一 个中间形式的文件中(PCH文件),编译器可以更加快捷的使用这个文件,减少编译时间。预先编译好的代码可以是任何的C/C++代码。 预编译头文件的目的就是提高编译速度。编译器以文件为单位编译,如果修改了一工程中的一个文件则所有文件都要重新编译,包括头文件里的所有东西。在比较大的C/C++程序中,这些头文件中所包括的东西往往很大,编译时间很长。其中一部分头文件不常被修改,为了减少因为修改A文件而去编译没有任何修改的B头文件,将B头文件加入PCH文件中,避免重复编译。 一般情况下,预编译头文件使用stdafx.h和stdafx.cpp;当然也可以用其他的文件名。具体方法如下: 1. 在项目属性中定义Create/Use Precompiled Header: Use Precompiled Header(/Yu),并指定Create/Use PCH Through File 为 stdafx.h 2. 修改stdafx.cpp的编译属性,Create/Use Precompiled Header: Create Precompiled Header (/Yc), Create/Use PCH Through File 指定为stdafx.h。 预编译头文件应当只include大的并且影响编译速度的头文件。最典型的就是windows.h,还包括STL头文件。 自己编写的的头文件一般来说不应当被include在stdafx.h中,因为变化很频繁。例外情况是,某些头文件基本稳定而且在很多文件中被include。 #define of WIN32_LEAN_AND_MEAN。WIN32_LEAN_AND_MEAN的目的就是减少Windows.h以及其所包含的头文件中那些老版本的,不常用的部分。 将source文件(特别是大量的小文件)用include指令合并到少量的几个文件,然后编译这个文件会减少编译时间。 预编译代码: 自动预编译和手动预编译:http://msdn.microsoft.com/en-us/library/2yzw0wyd%28vs.71%29.aspx 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-04
没有提pch一定要在第一行include。。。
没有提pch什么时候速度提高最大。。。 某些东西用了pch和没用编译速度没什么区别,有些则是本质区别。 我的经验是有模版的时候用pch会快很多。像boost,gtkmm这种库。 |
|
返回顶楼 | |
发表时间:2010-04-04
mikeandmore 写道 没有提pch一定要在第一行include。。。
没有提pch什么时候速度提高最大。。。 某些东西用了pch和没用编译速度没什么区别,有些则是本质区别。 我的经验是有模版的时候用pch会快很多。像boost,gtkmm这种库。 谢谢楼上提醒::D 1. 在第一行#include "stdafx.h"是必须的,编译器也会报错 2. 一般都是对于长期不变的,频繁include的头文件添加到PCH中,其他的不应该放到里面,boost肯定是很好的例子。 |
|
返回顶楼 | |