gch檔案學習

追憶丶年華發表於2018-01-16

今晚學習友元函式的時候一點一點的在寫一個標頭檔案和一個原始檔,中間g++ test.h了一下,無意中就生成了test.h.gch檔案。後來修改了標頭檔案的內容,但是不知道為什麼一直各種出錯,一番折騰之後才發現原來就是gch檔案的原因,gch在編譯器中不會因為修改了標頭檔案去作更新修改,所以在每一次的編譯時編譯器都會去先查詢標頭檔案對應的gch檔案,如果發現就直接呼叫gch檔案,導致新修改的標頭檔案並沒有起作用。解決方法就是刪除原先的gch檔案了,或者別沒事兒就g++你的標頭檔案。。

簡單說一下gch檔案

概念:

gch即預編譯頭,將標頭檔案預編譯為二進位制程式碼後後續編譯使用。當多個原始檔包含一個標頭檔案,正常流程是將其在每個原始檔中解析一遍,造成重複浪費。使用gch,將標頭檔案作預編譯頭形成中間處理的二進位制程式碼,然後再包含進原始檔中。

適用:

gch適用於被多個原始檔包含的標頭檔案,且標頭檔案不會經常做修改。

注意:

gch提高了編譯速度,但需要注意在預設情況下gch不會因為標頭檔案的更新而更新,從而在編譯過程中形成一個不容易發現的坑。需要將標頭檔案和gch設定為依賴關係。

相關文章