今晚学习友元函数的时候一点一点的在写一个头文件和一个源文件,中间g++ test.h了一下,无意中就生成了test.h.gch文件。后来修改了头文件的内容,但是不知道为什么一直各种出错,一番折腾之后才发现原来就是gch文件的原因,gch在编译器中不会因为修改了头文件去作更新修改,所以在每一次的编译时编译器都会去先查找头文件对应的gch文件,如果发现就直接调用gch文件,导致新修改的头文件并没有起作用。解决方法就是删除原先的gch文件了,或者别没事儿就g++你的头文件。。

简单说一下gch文件

概念:

gch即预编译头,将头文件预编译为二进制代码后后续编译使用。当多个源文件包含一个头文件,正常流程是将其在每个源文件中解析一遍,造成重复浪费。使用gch,将头文件作预编译头形成中间处理的二进制代码,然后再包含进源文件中。

适用:

gch适用于被多个源文件包含的头文件,且头文件不会经常做修改。

注意:

gch提高了编译速度,但需要注意在默认情况下gch不会因为头文件的更新而更新,从而在编译过程中形成一个不容易发现的坑。需要将头文件和gch设置为依赖关系。

gch文件学习的更多相关文章

  1. PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...

  2. Python文件学习

    Python文件学习 文章 Python文件学习 open函数 基本的用法模式:file_object=open('',access_mode='r',buffering=-1) 其中access_m ...

  3. python第三方库——xlrd和xlwt操作Excel文件学习

    python第三方库——xlrd和xlwt操作Excel文件学习 1安装: C:\Users\Lenovo>pip install xlwtCollecting xlwt  Downloadin ...

  4. GCH文件

    GCH文件是将H文件当作CPP进行编译之后出现的结果, 在头文件进行编译后就会在文件夹中看到一个 “文件名.h.gch” 的文件. 那么在再次对gch文件进行编译的时候就会将gch当作cpp一样对待. ...

  5. 编译生成的h.gch文件是什么鬼?

    所谓预编译头,就是把头文件事先编译成一种二进制的中间格式,供后续的编译过程使用.GCC编译头文件后的中间文件是*.gch. 如何将头文件编译为.gch文件呢?用g++编译,格式: g++ xxx.h ...

  6. 我永远讨厌gch文件

    一个学期没写博客了. 今天写OOP作业见鬼了, 调了半天. 我写了一个match.h和一个match.cpp, 然后match.cpp里面#include"match.h", 然后 ...

  7. Makefile文件学习总结

    Makefile文件相当于是一种脚本编程语言,目的是实现自动化编译.编写makefile文件的过程中可以使用变量.控制结构和函数等一般编程语言的特性. Makefile文件的组成内容.makefile ...

  8. PE文件学习系列笔记四-C++实现PE文件的分析

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 综述: 首 ...

  9. PE文件学习系列三-PE头详解

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 最近比较忙 ...

随机推荐

  1. [Grunt] Minifying your output with grunt-uglify

    For production we want to use minified javascript to reduce the payload that is sent from the server ...

  2. 【Python】【Nodejs】下载单张图片到本地,Python和Nodejs的比较

    Python版本: # 下载单张图片到本地,看用时多少 import urllib.request import datetime starttime = datetime.datetime.now( ...

  3. (笔试题)关于C++的虚函数和多态性

    以下两段程序的输出是什么? 程序1: #include "stdio.h" class Base { public: int Bar(char x) { return (int)( ...

  4. 超棒的在线Bootstrap主题编辑工具 - lollytin

    lollytin 是一款帮助制作Bootstrap3主题的在线工具,虽然现在仍旧是Beta版本,但是已经非常不错了. 主要功能: 通过拖拽来生成主题 支持拖拽页头,页脚,内容,幻灯,地图,表单,画廊, ...

  5. 菜鸟调错(三)——Jboss与jdk版本号不兼容导致WebService调用出错

    环境: jdk1.6 Jboss 5.1.0.GA 问题描写叙述: EJB公布webserivce已经成功,而且可以成功訪问wsdl文件: 使用axis1自带的sample/client下的类Dyna ...

  6. MESI-CPU缓存一致性协议

    转http://blog.csdn.net/realxie/article/details/7317630 http://en.wikipedia.org/wiki/MESI_protocol MES ...

  7. mysql基础知识之-数据库的创建、查看等常用操作

    命令创建mysql数据库: 先启动mysql数据库,连接数据库: mysql -uroot -p123456         (语法:mysql -u登录名 -p密码) 创建表: create dat ...

  8. UNIX网络编程调试工具:tcpdump、netstat和lsof

    tcpdump程序 tcpdump一边从网络读入分组一边显示关于这些分组的大量信息.它还能够只显示与所指定的准则匹配的那些分组. netstat程序 netstat服务于多个目的: (1)展示网络端点 ...

  9. 算法笔记_143:构造无向图的欧拉回路(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 具体链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...

  10. 【转发】Visual Studio 2013 如何关闭调试而不关闭IIS Express

    在VS主面板打开:工具->选项->调试->编辑继续   取消选中[启用"编辑并继续"] 就OK了 (英文版的请对应相应的操作) 不过这是针对所有的调试,如果你想针 ...