我永远讨厌gch文件

一个学期没写博客了.
今天写OOP作业见鬼了, 调了半天.

我写了一个match.h和一个match.cpp, 然后match.cpp里面#include"match.h", 然后g++ match.cpp -o match.o -c 总是出问题

最后我发现把match.h和match.cpp 复制一份到fk.h, fk.cpp, f**k.cpp可以编译

然后在工作目录发现一个match.h.gch

然后把这个match.h.gch删了就好了

match.h.gch是头文件match.h编译的中间结果, 为了加速编译, 在编译match.o的时候会直接把match.h.gch搞进去, 不在去看match.h

问题在于, 如果修改了match.h, 却没有更新对应的match.h.gch, 就会导致编译时用的match.h版本和你以为的不一样. 你以为编译器用的就是你刚刚改完保存到match.h的版本, 但是编译器直接用了之前的match.h.gch, 相当于用的是编译生成gch文件时的旧版本match.h

然后我就懵逼了好长时间.

所以为什么会出来一个match.h.gch呢?因为我打编译命令的时候不小心瞎打了一个 g++ match.h ,这个时候g++默认直接生成对应的gch文件(我不知道)

所以我以后不会再瞎打编译命令了.

原文地址:https://www.cnblogs.com/liu-runda/p/10981411.html