我永远讨厌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文件(我不知道)
所以我以后不会再瞎打编译命令了.