预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.这些预先编译好的代码可以是任何的C/C++代码--甚至可以是inline函数,只它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码.

为什么需要预编译头文件?一言以蔽之:提高编译速度.一般地,编译器以文件为单位编译,如果修改了一工程中的一个文件则所有文件都要重新编译,包括头文件里的所有东西(eg.Macro宏,Preprocessor预处理),而VC程序中,这些头文件中所包括的东西往往是非常大的,编译之将占很长的时间.但它们又不常被修改,是较稳定的,为单独的一个小文件而重新编译整个工程的所有文件导致编译效率下降,因此引入了.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文件.

注意:
A,实际上,由Appzard项目向导生成的默认的头文件及CPP文件StdAfx.h和StdAfx.cpp可以是任何名字的.原因很简单.但如果你要这样做就要记得修改相应的Project->setting...下的几个预编译指令(/Yc,/Yu,/Yx,/Fp)的参数.
B.在任何一个包括了将要预编译的头文件而使用了.PCH文件的工程文件的开头,一定必须要是在最开头,你要包含那个指定生成.PCH文件的.H文件(通过.CPP文件包括,默认为StdAfx.cpp),如果没包括将产生我最开头产生的错误.如果不是在最开头包括将产生让你意想不到的莫名其妙错误,如若不信,盍为试之?
C.预编译文件.PCH生成之很耗时间,而且生成之后它也很占磁盘空间,常在5-6M,注意项目完成之后及时清理无用的.PCH文件以节约磁盘空间.
D.如果丢了或删了.PCH文件而以后要再修改工程文件时,可将指定的/Yc的.CPP文件(默认为StdAfx.cpp)重新编译一次即可再次生成.PCH文件,不用傻傻的按F7或Rebuild All

原文地址:

https://zhidao.baidu.com/question/12914962.html

VC中.pch是什么文件,没有.pch文件怎么办相关推荐

  1. VC中使用低级音频函数WaveX播放声音文件

    文章摘要: 本文讨论并实现了在VC++中使用低级音频函数WaveX播放声音文件的方法. -------------------------------------------------------- ...

  2. VC中对CString 的读写(ini文件)

    //此处为写 CString a,b; a="as"; b="sa" CString strFileName;  CString strKeyName;  CS ...

  3. VC++中文件类型小结

    为什么80%的码农都做不了架构师?>>>    .dsw---- 这种类型的文件在VC中是级别最高的,称为Workspace文件   .dsp---- 在VC中,应用程序是以Proj ...

  4. Linux下的文件类型、文件后缀名 知识点解析

    文章目录 1.Linux文件的扩展名: 2.Linux 文件类型: 参考博客: https://blog.csdn.net/AQRSXIAO/article/details/82774729 人需要不 ...

  5. vc中常用文件操作(二) Ini文件操作

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINA ...

  6. VC中读写ini文件

    我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAP ...

  7. [转]VC++中对文件的写入和读取

    本文转自:http://blog.csdn.net/fanghb_1984/article/details/7425705 本文介绍两种方法对文件进行读取和写入操作:1.采用fstream类:2.采用 ...

  8. VC 6.0中添加库文件和头文件

    VC 6.0中添加库文件和头文件 分类: VC/VS 加头文件包含 VC6.0中: VC6.0默认include包含路径:Tools>Options>Directories>Incl ...

  9. 转:vc中如何通过http的post方式上传文件

    文章引自:http://blog.myspace.cn/e/404248359.htm vc中如何通过http的post方式上传文件 HTTP响应     在接收和解释请求消息后,服务器会返回一个HT ...

  10. VC中操作INI文件的API

    VC中操作INI文件的API (1)操作系统配置文件Win.ini的函数: 函数名 功能 GetProfileSection 读取win.ini中指定节lpAppName中所有键名及其值.lpRetu ...

最新文章

  1. sizeof用法研究
  2. vmware workstation 下安装ubuntu
  3. OpenCASCADE:Direct3D CSharp 示例
  4. Spring Mobile 1.1.0.RC1 和 1.0.2 发布
  5. linux中的acl权限,linux中的权限和ACL
  6. Linux资源控制-CPU和内存【转】
  7. Android自定义控件封装之自定义属性的实现
  8. 剑指offer【书】之简历抒写
  9. [51]12864液晶程序
  10. Microsoft .NET Framework 4 安装 1603错误的解决
  11. 实现 8086 汇编编译器(一)——基本框架
  12. 自动补全 (自定义)拼音分词器 搜索时注意事项
  13. 【日记 2021-05-14】树莓派获取环境亮度(光照度)
  14. sparksql语法,读json
  15. nutch核心代码分析——crawl.injector总结
  16. SEO 比比看: Che168.com VS pcauto.com.cn
  17. PDF格式分析(五十九) Color Spaces 颜色空间
  18. 关于中断try-catch-finally的小结
  19. Mellanox Infiniband卡切换IB/Ethernet模式
  20. ofd格式文档和pdf的区别

热门文章

  1. 荣耀热键驱动无法安装
  2. 图形验证码 java
  3. Renderdoc调试总结
  4. matlab 三角函数 积化和差,瞬间记住三角函数和差化积积化和差公式
  5. python——spilt和strip用法
  6. 小程序后端云开发(一)
  7. 【小波分析】一、小波分析入门基础介绍
  8. QT 输入框禁止window10触摸屏弹出键盘
  9. 《谈谈方法》这本小书篇幅很短,然而想说的却很多
  10. 翻译: 人工智能的时代的教育将比上一代富豪的孩子更受益 慕课大规模开放在线课程(MOOC)