• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 解析VC中预编译头文件的深入分析

解析VC中预编译头文件的深入分析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了vc6.0添加头文件,vc怎么添加头文件,vc 6.0图形头文件,vc 图形库头文件,vc 6.0创建头文件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
一。为什么预编译头文件:
预编译头的概念:
所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++代码,甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。注意生成预编译头文件是很耗时间的。同时你得注意预编译头文件通常很大,通常有6-7M大。注意及时清理那些没有用的预编译头文件。
也许你会问:现在的编译器都有Time stamp的 功能,编译器在编译整个工程的时候,它只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过的文件。那么为什么还要预编译头文件呢?答案在这里,我们知道编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西(.eg Macro, Preprocessor )都要重新处理一遍。VC的预编译头文件保存的正是这部分信息。以避免每次都要重新处理这些头文件。
根据上文介绍,预编译头文件的作用当然就是提高编译速度了,有了它你没有必要每次都编译那些不需要经常改变的代码。编译性能当然就提高了。

我们来考察一个典型的由AppWizard生成的MFC Dialog Based 程序的预编译头文件。(因为AppWizard会为我们指定好如何使用预编译头文件,默认的是StdAfx.h,这是VC起的名字)。我们会发现这个头文件里包含了以下的头文件:
#include <afxwin.h>    // MFC core and standard components
#include <afxext.h>    // MFC extensions
#include <afxdisp.h>    // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#include <afxcmn.h>
这些正是使用MFC的必须包含的头文件,当然我们不太可能在我们的工程中修改这些头文件的,所以说他们是稳定的。

二。如何预编译头文件:
要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch文件)想必大家都知道 StdAfx.h这个文件。很多人都认为这是VC提供的一个“系统级别”的,编译器带的一个头文件。其实不是的,这个文件可以是任何名字的。
1.如何在工程中使用预编译头文件:最简单的是在建立工程的时候选择“使用预编译头文件”;如果建立工程时没选,那么还可以在project ->Setting->C/C++ ->precompimed header中设置。
2.如何指定预编译头文件的头文件名:默认为StdAfx.h,不过可以通过project ->Setting->C/C++ ->precompimed header中设置成任何名字(实际是通过指令/Yc, /Yu)。然后再把稳定不变的代码的头文件包含到该头文件中即可。
3.需要的实现文件:编译需要CPP文件,而这个CPP文件自然地就是头文件名对应的CPP文件了,在这个CPP文件里只有一句胡:包含要预编译的文件头。
4.通过project ->Setting->C/C++ ->precompimed header中设置预编译文件的名称(以.pch结尾)(实际上是通过指定/Fp )。

三。如何使用预编译的头文件:
1.通过project ->Setting->C/C++ ->precompimed header设置好使用预编译头文件(/Yc, /Yu),依赖哪个头文件,及预编译好的头文件名。
2.如果你把pch文件不小心丢了,根据以上的分析,你只要让编译器生成一个pch文件就可以了。也就是说把 stdafx.cpp(即指定/Yc的那个cpp文件)重新编译一遍就可以了。当然你可以傻傻的 Rebuild all。简单一点就是选择那个cpp文件,按一下Ctrl + F7就可以了。
3.如果使用了/Yu,就是说使用了预编译,我们在每个.cpp文件的最开头,我强调一遍是最开头,包含你指定产生pch文件的.h文件(默认是stdafx.h)不然就会有问题。如果你没有包含这个文件,就告诉你Unexpected file end. 如果你不是在最开头包含的,你自己试以下就知道了,绝对有很惊人的效果。 (原因就在于编译器编译的时候不会编译stdafx.h前面的头文件)。
</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析VC中预编译头文件的深入分析

相关文章

  • 2017-05-28C语言中lseek()函数和fseek()函数的使用详解
  • 2017-05-28c++类构造函数详解
  • 2017-05-28C语言 解决不用+、-、×、÷数字运算符做加法的实现方法
  • 2017-05-28深入C++实现函数itoa()的分析
  • 2017-05-28C++中可正确获取UTF-8字符长度的函数分享
  • 2017-05-28C++内存泄漏及检测工具详解
  • 2017-05-28详解C++中的一维数组和二维数组
  • 2017-05-28C语言实现查询自动售货机中的商品价格【实例分享】
  • 2017-05-28基于稀疏图上的Johnson算法的详解
  • 2017-05-28常用C/C++预处理指令详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++中vector容器使用详细说明
    • C/C++中运算符的优先级、运算符的结合性详解
    • 指针与const限定符的使用分析
    • C++初始化列表学习
    • 简单分析C++指针的操作和运算
    • APUE笔记之:进程环境详解
    • C语言中计算正弦的相关函数总结
    • C++中的异常处理机制详解
    • 基于C++输出指针自增(++)运算的示例分析
    • ASCII编码,将英文存储到计算机

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有