一個學期沒寫博客了.
今天寫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文件(我不知道)
所以我以后不會再瞎打編譯命令了.
