zoukankan      html  css  js  c++  java
  • 预编译头文件

    这得从头文件的编译原理讲起。其实头文件并不神秘,它的全部作用,就是把自己的
    所有内容直接“粘贴”到相应的 #include 语句处。如果不相信的话,不妨做个实验,将
    一个 cpp 中的所有 #include 语句删掉,并将它包含的文件粘贴到相应的位置,你会发
    现,文件的编译和运行都完全没有受到影响。其实,编译器在编译你的程序的时候,所做
    的第一件事,也就是展开所有的 #include 语句和 #define 语句。

        头文件的出现,固然给书写程序带来了很大方便。可是到了 Windows 时代后,慢慢
    就呈现出一些问题了。几乎所有的 Windows 程序都必须包含 windows.h,而那个文件却
    硕大无比,将它展开后往所有文件中一粘贴,编译的时候立刻慢得像只蜗牛。

        到了 MFC 时代后,情况更为恶劣了。毕竟 C 风格的 Windows 头文件里面包含的还
    仅仅是函数定义和宏,编译难度不算太大,而 MFC 库里面的头文件可都是类声明啊!更
    何况,一个最简单的工程,都会生成大量的类,需要用到大量的函数。如果工程稍微复杂
    一些,编译难度可想而知!

        但是,人们惊奇地发现,虽然用到的头文件又多又杂,但是在一个工程中,总有那么
    一堆头文件,是几乎所有 cpp 都必须包含的。那么,可不可以把这些头文件提取出来,
    只编译一编,然后所有其它 cpp 就都能使用呢?没错,这就是预编译头的思想都由来!

        实践证明,使用了预编译头技术后,编译速度大大提高了。可以到你的工程目录下的
    Debug 或 Release 目录中看一看,里面有一个体积极为硕大的 .pch 文件,那就是传说
    中的“编译之后的预编译头”。

  • 相关阅读:
    定义Java类实现字节流转字符流
    zookeeper中的QuorumPeerMain解析
    Hadoop集群搭建(cluster setup),ssh免密后一直要求输入密码的原因
    cd .ssh返回-bash: cd: .ssh:No such file or directory怎么办
    安装jdk配置环境变量后jps command not found
    Redis简介二
    bash重定向
    Redis简介
    maven项目下pom.xml依赖报错
    《《《zTree视频学习笔记
  • 原文地址:https://www.cnblogs.com/wfwenchao/p/5082545.html
Copyright © 2011-2022 走看看